我有一个使用 cron 脚本运行的 django 项目,执行管理命令。此命令为 celery 创建 for 循环任务:
for r in pr:
log_task(tasks_logger.info, "to_queue", r)
remind.delay(r, now, send_all)
任务看起来像这样:
class RTask(Task):
abstract = True
def on_failure(self, exc, task_id, args, kwargs, einfo):
r = args[0]
log_task(logger.error, exc, r)
log_task(logger_tb.error, einfo, r)
@task(base=RTask)
def remind(r, now, send_all):
log_task(logger.info, "from_queue", r)
....
如您所见,我在任务执行之前和其中的第一行有一个记录器。问题是——在项目代码更新后(另一个程序员添加了其他任务和 celery 版本更新)我的大部分任务开始消失。我的日志文件如下所示(仅执行 8-10 个任务中的 1 个):
[2014-03-12 12:45:08,806] 106152122 INFO to_queue
[2014-03-12 12:45:08,819] 106138932 INFO to_queue
[2014-03-12 12:45:08,915] 106121944 INFO to_queue
[2014-03-12 12:45:08,916] 110418819 INFO from_queue
[2014-03-12 12:45:08,922] 106075777 INFO to_queue
celery 日志文件不包含任何有用的信息。兔子也是。 它有很多这样的东西,但它与我的任务无关,是吗?
[2014-03-12 12:58:43,091: INFO/MainProcess] Got task from broker: celery.chord_unlock[7fe8f29f-69e1-456c-8a14-7fae0cfacc33] eta:[2014-03-12 12:58:44.089401+00:00]
[2014-03-12 12:58:43,092: INFO/MainProcess] Task celery.chord_unlock[7fe8f29f-69e1-456c-8a14-7fae0cfacc33] retry: Retry in 1s
[2014-03-12 12:58:43,092: INFO/MainProcess] Task celery.chord_unlock[7b1d4a6b-9a34-43e9-98c9-851c93ace5ce] retry: Retry in 1s
可能是什么问题? 我如何跟踪任务以了解它何时消失?
请帮忙=)
最佳答案
您可能有 celery 进程在后台运行,这是之前未正确关闭的启动的遗留物,可能正在消耗消息。尝试通过运行看看你是否有这样的 worker
ps 辅助 | grep celery
在命令行中。以下命令将自动为您杀死所有此类孤儿 celery worker :
ps 辅助 | grep celery | awk '{system("kill -9 "$2)}'
我在启动我的应用程序之前执行它
关于python - celery 任务消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354668/