芹菜找不到工人
Celery cannot find a worker
我正在使用这样配置的芹菜
default_exchange = Exchange('default', type='direct')
latest_exchange = Exchange('latest', type='direct')
shared_celery_config = {
'BROKER_URL': 'redis://localhost:6379/0',
'CELERY_RESULT_BACKEND': 'redis://localhost:6379/0',
'CELERY_DEFAULT_EXCHANGE': 'default',
'CELERY_DEFAULT_ROUTING_KEY': 'default',
'CELERY_DEFAULT_QUEUE': 'default',
'CELERY_QUEUES': (
Queue('default', default_exchange, routing_key='default'),
Queue('latest', latest_exchange, routing_key='latest'),
),
}
celery = Celery('tasks', config_source=shared_celery_config)
但是当我创建任务时 none 工作人员正在使用它,但没有任何反应。我开始工作:
celery worker -A tasks --loglevel=debug --hostname=worker1
。我可以从 ps aux | grep celery
输出中看到它们,但是当执行某些命令以获取 celery -A tasks status
之类的统计信息时,我收到以下错误消息
Error: No nodes replied within time constraint.
。因此所有任务都处于 PENDING 状态。我相信这是一些配置错误,但无法弄清楚出了什么问题以及如何调试这样的东西。任何建议都会很有帮助
问题已解决。我有一个使用 gevent 的 Web 应用程序,在 tasks
模块中,我从另一个具有 monkey.patch_all()
的模块导入。它以某种方式阻止了台球,因此阻止了工人开始台球,这导致了这种后果。
无论如何,根本不要使用 gevent,恕我直言。
我正在使用这样配置的芹菜
default_exchange = Exchange('default', type='direct')
latest_exchange = Exchange('latest', type='direct')
shared_celery_config = {
'BROKER_URL': 'redis://localhost:6379/0',
'CELERY_RESULT_BACKEND': 'redis://localhost:6379/0',
'CELERY_DEFAULT_EXCHANGE': 'default',
'CELERY_DEFAULT_ROUTING_KEY': 'default',
'CELERY_DEFAULT_QUEUE': 'default',
'CELERY_QUEUES': (
Queue('default', default_exchange, routing_key='default'),
Queue('latest', latest_exchange, routing_key='latest'),
),
}
celery = Celery('tasks', config_source=shared_celery_config)
但是当我创建任务时 none 工作人员正在使用它,但没有任何反应。我开始工作:
celery worker -A tasks --loglevel=debug --hostname=worker1
。我可以从 ps aux | grep celery
输出中看到它们,但是当执行某些命令以获取 celery -A tasks status
之类的统计信息时,我收到以下错误消息
Error: No nodes replied within time constraint.
。因此所有任务都处于 PENDING 状态。我相信这是一些配置错误,但无法弄清楚出了什么问题以及如何调试这样的东西。任何建议都会很有帮助
问题已解决。我有一个使用 gevent 的 Web 应用程序,在 tasks
模块中,我从另一个具有 monkey.patch_all()
的模块导入。它以某种方式阻止了台球,因此阻止了工人开始台球,这导致了这种后果。
无论如何,根本不要使用 gevent,恕我直言。