【问题标题】:Celery worker stops after being idle for a few hours芹菜工人闲置几个小时后停止
【发布时间】:2018-08-29 07:54:22
【问题描述】:

我有一个使用 WSGI 的 Flask 应用程序。对于一些任务,我计划将 Celery 与 RabbitMQ 一起使用。但正如标题所说,我面临一个问题,即 Celery 任务运行了几分钟,然后在长时间不活动后就消失了。

Celery 配置:

CELERY_BROKER_URL='amqp://guest:guest@localhost:5672//'
BROKER_HEARTBEAT = 10 
BROKER_HEARTBEAT_CHECKRATE = 2.0
BROKER_POOL_LIMIT = None

this的问题,我添加了BROKER_HEARTBEATBROKER_HEARTBEAT_CHECKRATE

我使用celery -A acmeapp.celery worker &venv 中运行worker 以在后台运行它。在检查状态的前几分钟,它显示一个节点在线并给出OK 响应。但是在应用程序空闲几个小时后,当我检查 Celery 状态时,它显示Error: No nodes replied within time constraint.

我是 Celery 的新手,现在不知道该怎么办。

【问题讨论】:

  • 这是在您的本地机器还是生产服务器上?如果它是免费的开发帐户,则生产服务器可能会关闭。你的经纪人呢?这些连接是保持活跃还是死了?您是否收到任何其他可能诊断您的问题的回溯..
  • 它在生产服务器上。不是免费帐户。我不知道如何检查代理连接,但芹菜工人本身在空闲后就死了。除了状态响应之外没有其他回溯。

标签: python flask rabbitmq celery


【解决方案1】:

您的 Celery 工作人员可能会尝试重新连接到应用程序,直到达到重试限制。如果是这种情况,在您的配置文件中设置此选项将解决该问题。

BROKER_CONNECTION_RETRY = True
BROKER_CONNECTION_MAX_RETRIES = 0

第一行将使其在失败时重试,第二行将禁用重试限制。

如果该解决方案不够适合您,您还可以使用此选项为您的应用尝试高超时(以秒为单位):

BROKER_CONNECTION_TIMEOUT = 120

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2015-06-01
    • 2019-03-13
    • 2014-09-23
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2017-04-23
    相关资源
    最近更新 更多