lxy*_*xyu 31 python asynchronous task celery
我正在使用芹菜,我有几个需要按顺序执行的任务.
例如,我有这个任务:
@celery.task
def tprint(word):
print word
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
>>> chain(tprint.s('a') | tprint.s('b'))()
Run Code Online (Sandbox Code Playgroud)
然后我明白了TypeError: tprint() takes exactly 1 argument (2 given).
和弦一样,在这种情况下我需要在一组任务后执行任务:
>>> chord([tprint.s('a'), tprint.s('b')])(tprint.s('c'))
Run Code Online (Sandbox Code Playgroud)
那么如何处理这种情况呢?我不关心每项任务的结果,但需要按顺序执行.
添加第二个参数将无法正常工作:
@celery.task
def tprint(word, ignore=None):
print word
>>> chain(tprint.s('a', 0) | tprint.s('b'))()
Run Code Online (Sandbox Code Playgroud)
这将打印出'a'和'None'.
Vla*_*lov 63
有一个内置的功能可以忽略链接中的结果和其他 - 不可变的子任务.您可以使用.si()快捷方式而不是.s()或.subtask(immutable = True)
更多详细信息:http://docs.celeryproject.org/en/master/userguide/canvas.html#immutability
| 归档时间: |
|
| 查看次数: |
11141 次 |
| 最近记录: |