【问题标题】:Celery tasks get blocked by SSE client芹菜任务被 SSE 客户端阻止
【发布时间】:2021-08-27 03:23:23
【问题描述】:

我正在运行一个 SSE 消费者来更新一些这样的表

@app.task(ignore_result=True)
@worker_ready.connect
def xx_sse_nodes_uptime_info_consumer(sender, **kwargs):
   update_tables...

由于某种原因,当我们有 .delay 调用其他任务时,其他任务不会被触发。如果我删除上面的任务,其他任务将正常工作。

另外,当CELERY_TASK_ALWAYS_EAGER=TrueCELERY_TASK_EAGER_PROPAGATES=True 一切正常时。

由于 SSE 消费者使用 stream=Truexx_sse_nodes_uptime_info_consumer 永远不会结束。我不确定为什么这会阻止其他任务,因为有足够的线程。

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    解决了为此创建一个函数

    @worker_ready.connect
    def at_worker_ready(sender, **k):
        with sender.app.connection() as conn:
            sender.app.send_task('nodeinfo.tasks.xx_sse_nodes_uptime_info_consumer', connection=conn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2011-08-15
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 2014-12-04
      • 2015-09-10
      相关资源
      最近更新 更多