find-unprocessed-tasks-debug.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. #--------------------------------------------------------------------#
  3. # Find all currently unprocessed tasks by searching the celeryd
  4. # log file.
  5. #
  6. # Please note that this will also include tasks that raised an exception,
  7. # or is just under active processing (will finish soon).
  8. #
  9. # Usage:
  10. #
  11. # # Using default log file /var/log/celeryd.log
  12. # $ bash find-unprocessed-tasks.sh
  13. #
  14. # # Using a custom logfile
  15. # # bash find-unprocessed-tasks.sh ./celeryd.log
  16. #
  17. #--------------------------------------------------------------------#
  18. DEFAULT_LOGFILE=/var/log/celeryd.log
  19. export CELERYD_LOGFILE=${1:-$DEFAULT_LOGFILE}
  20. get_start_date_by_task_id() {
  21. task_id="$1"
  22. grep Apply $CELERYD_LOGFILE | \
  23. grep "$task_id" | \
  24. perl -nle'
  25. /^\[(.+?): DEBUG/; print $1' | \
  26. sed 's/\s*$//'
  27. }
  28. get_end_date_by_task_id() {
  29. task_id="$1"
  30. grep processed $CELERYD_LOGFILE | \
  31. grep "$task_id" | \
  32. perl -nle'
  33. /^\[(.+?): INFO/; print $1 ' | \
  34. sed 's/\s*$//'
  35. }
  36. get_all_task_ids() {
  37. grep Apply $CELERYD_LOGFILE | perl -nle"/'task_id': '(.+?)'/; print \$1"
  38. }
  39. search_logs_for_task_id() {
  40. grep "$task_id" $CELERYD_LOGFILE
  41. }
  42. report_unprocessed_task() {
  43. task_id="$1"
  44. date_start="$2"
  45. cat <<EOFTEXT
  46. "---------------------------------------------------------------------------------"
  47. | UNFINISHED TASK: $task_id [$date_start]
  48. "---------------------------------------------------------------------------------"
  49. Related logs:
  50. EOFTEXT
  51. search_logs_for_task_id "$task_id"
  52. }
  53. for task_id in $(get_all_task_ids); do
  54. date_start=$(get_start_date_by_task_id "$task_id")
  55. date_end=$(get_end_date_by_task_id "$task_id")
  56. if [ -z "$date_end" ]; then
  57. report_unprocessed_task "$task_id" "$date_start"
  58. fi
  59. done