从CELERYBEAT_SCHEDULE中将一个任务链接到另一个任务

时间:2016-03-02 23:20:33

标签: django celery celerybeat

在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

1 个答案:

答案 0 :(得分:1)

如果要在第二个函数执行之前等待函数完成,那么按定义同步。 Celery旨在异步执行函数。如果要创建一个同步执行顺序相关函数的附加函数,并与其中一个芹菜装饰器异步运行该函数,该怎么办?例如:

10:10