我的Python代码有问题吗?(职能)
如果我运行这段代码,我希望任务会不断地添加到队列中。但事实并非如此!只有第一个任务5,2被添加到队列并被处理 由于此行的原因,应该会不断添加任务:add.delay1,9我的Python代码有问题吗?(职能),python,django,queue,rabbitmq,celery,Python,Django,Queue,Rabbitmq,Celery,如果我运行这段代码,我希望任务会不断地添加到队列中。但事实并非如此!只有第一个任务5,2被添加到队列并被处理 由于此行的原因,应该会不断添加任务:add.delay1,9 注意:我需要每个任务执行另一个任务 在我看来,周期性任务装饰器正在创建周期前任务,任务只创建一个任务。延迟只是异步执行它 您应该只使用周期性任务,而不是递归。add inside函数体指的是原始函数,而不是它的修饰版本 如果您只需要重复运行任务,请改用@periodic_task。只有当每次延迟不同时,才需要递归。在这种情况下
注意:我需要每个任务执行另一个任务 在我看来,周期性任务装饰器正在创建周期前任务,任务只创建一个任务。延迟只是异步执行它 您应该只使用周期性任务,而不是递归。add inside函数体指的是原始函数,而不是它的修饰版本
如果您只需要重复运行任务,请改用@periodic_task。只有当每次延迟不同时,才需要递归。在这种情况下,子类化Task而不是使用decorator,您将能够毫无问题地使用递归。您应该查看子任务和回调,可能会给出您正在寻找的答案
不,我需要每个任务执行另一个任务。我该怎么做?那是什么意思?你能给我们描述一下你认为add.delay1,9应该做什么以及为什么吗?我认为add.delay1,9会调用相同的函数add。然后,因为有一个decorator,它将把它当作一个任务,在这种情况下,另一个任务将运行。任务将继续创建,而且永远不会结束。异步任务可能会运行,因为它们是异步运行的,但您永远不会使用它们的输出。事实上,它不会显示在控制台中。所以我相信它们永远不会运行。首先,你需要这个任务来执行同一个任务,或者另一个任务?其次,你为什么需要它?有什么原因吗,或者你只是依附于现在的生活方式?
#tasks.py
from celery.decorators import task
@task()
def add(x, y):
add.delay(1, 9)
return x + y
>>> import tasks
>>> res = tasks.add.delay(5, 2)
>>> res.result()
7