【问题标题】:Celery- signal to detect idle workers芹菜 - 检测空闲工人的信号
【发布时间】:2020-12-20 02:46:07
【问题描述】:

我有 1 个 celery broker 和几个 celery worker,都与 rabbitMQ 通信。在我的设置中,我向我的 celery worker 发送了几个任务,他们将处理所有任务(大约需要 1 小时),然后我将手动终止我的 celery worker。

我想转向一个系统,如果芹菜工人 id 为“空闲”(我定义为:在 timeout_seconds 的时间段内有 0 个活动任务,我将预先定义),工人将被终止以编程方式。所有工作人员将有大约相同数量的任务要运行,并且都会在同一时间“空闲”。

我设置了可以终止工作人员的代码,但我不确定如何检测工作人员处于“空闲”状态并准备好终止工作。我想我想使用signal,但看起来没有一个符合我的要求

【问题讨论】:

    标签: celery


    【解决方案1】:

    在我工作的地方,我们的任务基本上是在做你想做的事——根据“情况”自动扩大/缩小集群。这个过程的关键是 Celery inspect/control API,所以我建议你熟悉它。这是一个没有充分记录的领域,因此请从以下内容开始:

    insp = celery_app.control.inspect()
    active_queues = insp.active_queues()
    # Note: between these two calls some nodes may shut down and disappear
    # from the dictionary so may need to deal with this...
    active_stats = insp.active()
    

    您可以在 Celery 集群运行任务时在单独的 IPython 会话中执行此操作,并查看其中的内容...

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2014-10-28
      • 1970-01-01
      • 2014-08-17
      • 2019-12-17
      相关资源
      最近更新 更多