【发布时间】:2013-12-04 04:24:43
【问题描述】:
对当前正在运行的 Celery 任务的检查发现了一个奇怪的 time_start 时间戳:
>> celery.app.control.inspect().active()
{u'celery@worker.hostname': [{u'acknowledged': True,
u'args': u'(...,)',
u'delivery_info': {u'exchange': u'celery',
u'priority': 0,
u'redelivered': None,
u'routing_key': u'celery'},
u'hostname': u'celery@worker.hostname',
u'id': u'3d92fdfd-524e-4ba1-98cb-cf83af2ad8e9',
u'kwargs': u'{}',
u'name': u'task_name',
u'time_start': 9636801.218162088,
u'worker_pid': 7931}]}
time_start 属性将任务追溯到 1970(那是在创建 Celery、Python 之前,而且我没有定制的 DeLorean):
>> from datetime import datetime
>> datetime.fromtimestamp(9636801.218162088)
datetime.datetime(1970, 4, 22, 13, 53, 21, 218162)
我是否误解了time_task 属性?我的 Celery 应用是否配置错误?
我在 Linux 上使用 Celery 3.1.4 与 Django 应用程序和 Redis 后端。
任务由一个worker运行,执行如下:
./manage.py celery worker --loglevel=INFO --soft-time-limit=600 --logfile=/tmp/w1.log --pidfile=/tmp/w1.pid -n 'w1.%%h'
【问题讨论】:
-
感谢您的关注!我添加了一些细节。
-
下一个问题:你的操作系统是什么?是所有任务都具有如此奇怪的 start_times 还是只有其中一些?以及您在有工人的机器上的日期值是多少?
-
时间戳不是UNIX时间戳,它使用的是
time.monotonic(),所以在进程外可能没有用(取决于单调的实现)
标签: python django redis celery celery-task