【问题标题】:Broadcast task to all workers with redis and celery使用 redis 和 celery 向所有工作人员广播任务
【发布时间】:2017-05-16 10:37:30
【问题描述】:

我试试: ma​​in.py

import tasks
if __name__ == '__main__':
    result = tasks.add.apply_async(([4, 4]), queue='broadcast_tasks')
    result.ready()
    value = result.get()
    print(value)

tasks.py

from celery import Celery
from kombu.common import Broadcast
app = Celery('tasks',
             broker='redis://localhost:6379/0',
             backend='redis://localhost:6379/1',
             include=['tasks'])
app.conf.update(
    result_expires=3600,
)
task_serializer = 'json'
result_serializer = 'json'
accept_content = ['json']
timezone = 'UTC'

app.conf.task_queues = (Broadcast('broadcast_tasks'),)
app.conf.task_routes = {'tasks.add': {'queue': 'broadcast_tasks'}}


@app.task
def add(x, y):
    return x + y

我想用 redis(代理和后端)和 celery 向所有工作人员广播任务,但我没有实现,请您帮帮我吗?

【问题讨论】:

    标签: python redis celery broadcast


    【解决方案1】:

    celery 团队正在合并相应的 issue: https://github.com/celery/celery/pull/3934

    这应该在下一个版本中可用(我希望)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-23
      • 2019-11-19
      • 2021-08-15
      • 2012-08-11
      • 2018-05-03
      • 2021-12-15
      • 2018-10-07
      • 2014-04-13
      相关资源
      最近更新 更多