【问题标题】:Currency within celery task芹菜任务中的货币
【发布时间】:2016-02-03 23:11:00
【问题描述】:
我对 python 和 celery 很陌生。
我的工作是非常繁重的 IO 限制,需要做 http 请求、查询 redshift、mysql 和写入 mysql。
我们正在考虑使用 celery 来连续运行作业,但我认为是否可以在我的 celery 任务中实现并发。基本上就像每个任务可以批量处理一组数据,异步调用。
我试图使用 tornado gen.coroutine,但是没有明确的理由用芹菜失败了。 gevent或eventlet会好吗?谁能给点建议?
我真的很感激,谢谢!
【问题讨论】:
标签:
python-2.7
concurrency
celery
celery-task
【解决方案1】:
听起来您想创建多个较小的 celery 任务并使用Chord 将它们绑定在一起。
编辑:由于有人似乎认为链接到官方文档不够好(我能想到的唯一理由)我将在此处粘贴文档中的代码:
@app.task
def add(x, y):
return x + y
@app.task
def tsum(numbers):
return sum(numbers)
>>> from celery import chord
>>> from tasks import add, tsum
>>> chord(add.s(i, i)
... for i in xrange(100))(tsum.s()).get()
9900
>>> callback = tsum.s()
>>> header = [add.s(i, i) for i in range(100)]
>>> result = chord(header)(callback)
>>> result.get()
9900