【问题标题】:Add a delay between subtasks of a group在组的子任务之间添加延迟
【发布时间】:2017-10-19 18:24:05
【问题描述】:

我正在创建一个 Celery group 来并行执行一堆进程。以下是代码-

@periodic_task(run_every=timedelta(minutes=1))
def schedule_pivots():
    today_list="A,B,C,D"
    g = group(get_pivots.s(l,'OPT') for l in today_list.split(','))
    g.set(countdown=100).delay()

'get_pivots' 是并行调用的任务。此任务调用外部 API,如果在 500 毫秒内调用,该 API 会限制速率。我有没有办法在每次执行任务“get_pivots”之间引入延迟?

【问题讨论】:

  • 您是否尝试过可以发送参数的签名表单 add.s(2, 2, rateLimit='10/m') ?

标签: celery celerybeat


【解决方案1】:

刚刚测试了这个

@celery.task(rate_limit='10/m')
def add(x, y):
    return x + y

从 python 解释器调用此任务时

>>> g = group(add.s(i, i + 1) for i in range(10))
>>> r = g()
>>> r.get()

最后一部分冻结,直到一切都完成,希望有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多