【发布时间】:2015-06-14 13:41:57
【问题描述】:
我已经调用了一个任务,该任务使用 urllib2 远程获取一些信息数千次。这些任务是用随机的 eta(一周内)安排的,因此它们不会同时到达服务器。有时我得到 404,有时没有。我正在处理错误以防万一。
在 RabbitMQ 控制台中,我可以看到 16 条未确认的消息:
我停止了 celery,清除了队列并重新启动它。 16 条未确认的消息仍然存在。
我还有其他任务进入同一个队列,但也没有一个任务被执行。清除后,我尝试提交另一个任务,它的状态仍然是ready:
有什么想法可以找出为什么消息仍未被确认?
版本:
celery==3.1.4
{rabbit,"RabbitMQ","3.5.3"}
celeryapp.py
CELERYBEAT_SCHEDULE = {
'social_grabber': {
'task': '<django app>.tasks.task_social_grabber',
'schedule': crontab(hour=5, minute=0, day_of_week='sunday'),
},
}
tasks.py
@app.task
def task_social_grabber():
for user in users:
eta = randint(0, 60 * 60 * 24 * 7) #week in seconds
task_social_grabber_single.apply_async((user), countdown=eta)
此任务没有定义路由,因此它进入默认队列:celery。有一个工作人员在处理这个队列。
supervisord.conf:
[program:celery]
autostart = true
autorestart = true
command = celery worker -A <django app>.celeryapp:app --concurrency=3 -l INFO -n celery
【问题讨论】:
-
您能发布您的 celery 配置、celery 版本和 RabbitMQ 版本吗?
-
完成。如果您还需要什么,请告诉我。
标签: python rabbitmq celery urllib2