在Django项目中,在主Django应用程序的目录中的tasks.py
中定义了几个Celery任务。 CELERYBEAT_SCHEDULE
中的settings.py
用于安排某些任务定期运行。
有没有办法将一个Celery任务的输出链接到另一个Celery任务,其方式与下面类似?假设export_to_csv
返回文件路径,upload_file
接受文件路径作为输入。
CELERYBEAT_SCHEDULE = {
'do-something': {
'task': 'myproj.tasks.export_to_csv',
'schedule': crontab(hour=12, minute=30),
'args': (1, 2, 3),
'options': {
'link': 'myproj.tasks.upload_file'
}
},
}
类似于下面的东西:
from myproj.tasks import upload_file
CELERYBEAT_SCHEDULE = {
'do-something': {
'task': 'myproj.tasks.export_to_csv',
'schedule': crontab(hour=12, minute=30),
'args': (1, 2, 3),
'options': {
'link': upload_file.s()
}
},
}
但由于循环导入,CELERYBEAT_SCHEDULE
不再位于settings.py
。第一个例子不起作用,当“'链接”时也不起作用。字符串是myproj.tasks.upload_file.s
。
答案 0 :(得分:1)
如果要在第二个函数执行之前等待函数完成,那么按定义同步。 Celery旨在异步执行函数。如果要创建一个同步执行顺序相关函数的附加函数,并与其中一个芹菜装饰器异步运行该函数,该怎么办?例如:
10:10