芹菜工人闲置几个小时后停止
Celery worker stops after being idle for a few hours
我有一个使用 WSGI 的 Flask 应用程序。对于一些任务,我计划将 Celery 与 RabbitMQ 结合使用。但正如标题所说,我面临一个问题,即 Celery 任务 运行 几分钟,然后在长时间不活动后它就消失了。
芹菜配置:
CELERY_BROKER_URL='amqp://guest:guest@localhost:5672//'
BROKER_HEARTBEAT = 10
BROKER_HEARTBEAT_CHECKRATE = 2.0
BROKER_POOL_LIMIT = None
从this问题,我添加了BROKER_HEARTBEAT
和BROKER_HEARTBEAT_CHECKRATE
。
我运行里面的工人venv
用celery -A acmeapp.celery worker &
到运行它在后台。在检查状态时,前几分钟显示有一个节点在线并给出 OK
响应。但是在应用程序空闲几个小时后,当我检查 Celery 状态时,它显示 Error: No nodes replied within time constraint.
.
我是 Celery 的新手,我现在不知道该怎么做。
您的 Celery worker 可能会尝试重新连接到应用程序,直到达到重试限制。如果是这种情况,在您的配置文件中设置此选项将解决该问题。
BROKER_CONNECTION_RETRY = True
BROKER_CONNECTION_MAX_RETRIES = 0
第一行会在失败时重试,第二行会禁用重试限制。
如果该解决方案不够适合您,您还可以使用此选项为您的应用尝试高超时(以秒为单位指定):
BROKER_CONNECTION_TIMEOUT = 120
希望对您有所帮助!
我有一个使用 WSGI 的 Flask 应用程序。对于一些任务,我计划将 Celery 与 RabbitMQ 结合使用。但正如标题所说,我面临一个问题,即 Celery 任务 运行 几分钟,然后在长时间不活动后它就消失了。
芹菜配置:
CELERY_BROKER_URL='amqp://guest:guest@localhost:5672//'
BROKER_HEARTBEAT = 10
BROKER_HEARTBEAT_CHECKRATE = 2.0
BROKER_POOL_LIMIT = None
从this问题,我添加了BROKER_HEARTBEAT
和BROKER_HEARTBEAT_CHECKRATE
。
我运行里面的工人venv
用celery -A acmeapp.celery worker &
到运行它在后台。在检查状态时,前几分钟显示有一个节点在线并给出 OK
响应。但是在应用程序空闲几个小时后,当我检查 Celery 状态时,它显示 Error: No nodes replied within time constraint.
.
我是 Celery 的新手,我现在不知道该怎么做。
您的 Celery worker 可能会尝试重新连接到应用程序,直到达到重试限制。如果是这种情况,在您的配置文件中设置此选项将解决该问题。
BROKER_CONNECTION_RETRY = True
BROKER_CONNECTION_MAX_RETRIES = 0
第一行会在失败时重试,第二行会禁用重试限制。
如果该解决方案不够适合您,您还可以使用此选项为您的应用尝试高超时(以秒为单位指定):
BROKER_CONNECTION_TIMEOUT = 120
希望对您有所帮助!