|
@@ -0,0 +1,72 @@
|
|
|
+#!/bin/bash
|
|
|
+#--------------------------------------------------------------------#
|
|
|
+# Find all currently unprocessed tasks by searching the celeryd
|
|
|
+# log file.
|
|
|
+#
|
|
|
+# Please note that this will also include tasks that raised an exception,
|
|
|
+# or is just under active processing (will finish soon).
|
|
|
+#
|
|
|
+# Usage:
|
|
|
+#
|
|
|
+# # Using default log file /var/log/celeryd.log
|
|
|
+# $ bash find-unprocessed-tasks.sh
|
|
|
+#
|
|
|
+# # Using a custom logfile
|
|
|
+# # bash find-unprocessed-tasks.sh ./celeryd.log
|
|
|
+#
|
|
|
+#--------------------------------------------------------------------#
|
|
|
+
|
|
|
+DEFAULT_LOGFILE=/var/log/celeryd.log
|
|
|
+export CELERYD_LOGFILE=${1:-$DEFAULT_LOGFILE}
|
|
|
+
|
|
|
+
|
|
|
+get_start_date_by_task_id() {
|
|
|
+ task_id="$1"
|
|
|
+ grep Apply $CELERYD_LOGFILE | \
|
|
|
+ grep "$task_id" | \
|
|
|
+ perl -nle'
|
|
|
+ /^\[(.+?): DEBUG/; print $1' | \
|
|
|
+ sed 's/\s*$//'
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+get_end_date_by_task_id() {
|
|
|
+ task_id="$1"
|
|
|
+ grep processed $CELERYD_LOGFILE | \
|
|
|
+ grep "$task_id" | \
|
|
|
+ perl -nle'
|
|
|
+ /^\[(.+?): INFO/; print $1 ' | \
|
|
|
+ sed 's/\s*$//'
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+get_all_task_ids() {
|
|
|
+ grep Apply $CELERYD_LOGFILE | perl -nle"/'task_id': '(.+?)'/; print \$1"
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+search_logs_for_task_id() {
|
|
|
+ grep "$task_id" $CELERYD_LOGFILE
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+report_unprocessed_task() {
|
|
|
+ task_id="$1"
|
|
|
+ date_start="$2"
|
|
|
+
|
|
|
+ cat <<EOFTEXT
|
|
|
+"---------------------------------------------------------------------------------"
|
|
|
+| UNFINISHED TASK: $task_id [$date_start]
|
|
|
+"---------------------------------------------------------------------------------"
|
|
|
+Related logs:
|
|
|
+EOFTEXT
|
|
|
+ search_logs_for_task_id "$task_id"
|
|
|
+}
|
|
|
+
|
|
|
+for task_id in $(get_all_task_ids); do
|
|
|
+ date_start=$(get_start_date_by_task_id "$task_id")
|
|
|
+ date_end=$(get_end_date_by_task_id "$task_id")
|
|
|
+ if [ -z "$date_end" ]; then
|
|
|
+ report_unprocessed_task "$task_id" "$date_start"
|
|
|
+ fi
|
|
|
+done
|