0

运行 Celery 时收到 AssertionError。这个问题是持久的和可重复的,如果我运行一个包含约 700,000 个子任务的作业,那么问题会在某个时间点出现在作业中。但是,如果我运行一个只有 180 个子任务的作业,它就不会发生。

[2014-06-10 10:27:51,355: ERROR/MainProcess] Unrecoverable error: AssertionError()
Traceback (most recent call last):
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/worker/__init__.py", line 206, in start
self.blueprint.start(self)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start
step.start(parent)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/bootsteps.py", line 373, in start
return self.obj.start()
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/worker/consumer.py", line 278, in start
blueprint.start(self)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/bootsteps.py", line 123, in start
step.start(parent)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/worker/consumer.py", line 821, in start
c.loop(*c.loop_args())
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/worker/loops.py", line 72, in asynloop
next(loop)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/kombu/async/hub.py", line 324, in create_loop
cb(*cbargs)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/concurrency/asynpool.py", line 263, in on_result_readable
next(it)
  File "/Users/beccapetrin/Documents/Development/automated_reports/lib/python2.7/site-packages/celery/concurrency/asynpool.py", line 200, in _recv_message
assert not isblocking(fd)
AssertionError

这是我的配置详细信息:

$ celery report

software -> celery:3.1.12 (Cipater) kombu:3.0.19 py:2.7.5
            billiard:3.3.0.17 py-amqp:1.4.5
platform -> system:Darwin arch:64bit imp:CPython
loader   -> celery.loaders.default.Loader
settings -> transport:amqp results:amqp://username:password@localhost:5672

CELERY_QUEUES:
    (<unbound Queue automated_reports -> <unbound Exchange default(direct)> -> automated_reports>,)
CELERY_DEFAULT_ROUTING_KEY: '********'
CELERY_IMPORTS:
    ('automated_reports.queue.tasks', 'automated_reports.queue.subtasks')
CELERY_RESULT_PERSISTENT: True
CELERY_ROUTES: {
    'automated_reports.queue.tasks.run_device_info_report': {   'queue': 'automated_reports'},
    'uploader.queue.subtasks.multithread_device_listing': {   'queue': 'automated_reports'},
    'uploader.queue.subtasks.multithread_individual_device': {   'queue': 'automated_reports'},
    'uploader.queue.tasks.multithread_device_listing': {   'queue': 'automated_reports'},
    'uploader.queue.tasks.multithread_individual_device': {   'queue': 'automated_reports'}}
CELERY_DEFAULT_QUEUE: 'automated_reports'
BROKER_URL: 'amqp://guest:********@localhost:5672//'
CELERY_RESULT_BACKEND: 'amqp://username:password@localhost:5672'

我的工人启动命令是:

~/Documents/Development/automated_reports/bin/celeryd --loglevel=DEBUG --autoreload -A automated_reports.queue.tasks -Q automated_reports -B --schedule=~/Documents/Development/automated_reports/log/celerybeat --autoscale=10,3 -Ofair

我将我的应用程序作为一个任务运行,然后使用组合在一起的 celery 子任务启动子任务。

操作系统版本是 Mac OS X,版本 10.9.3。

这似乎与我在 Github 上看到的一些最近的 Celery 问题非常相似,但并不完全相同。谢谢!

根据与 celery 团队的对话,我也在 Github 上发布了这个问题:https ://github.com/celery/celery/issues/2086

4

1 回答 1

0

当我从 worker 启动命令中删除 --autoscale 标志时,这解决了。

于 2014-06-12T20:27:16.113 回答