wor*_*ogy 12 django recursion save celery
我重写模型的save()方法来调用Celery的异步任务.该任务还保存了模型,因此我最终得到了重复调用Celery任务的递归情况.这是代码:
模型的保存方法:
def save(self, *args, **kwargs):
super(Route, self).save(*args, **kwargs)
from .tasks import get_elevation_data
get_elevation_data.delay(self)
Run Code Online (Sandbox Code Playgroud)
get_elevation_data任务:
from celery.decorators import task
@task()
def get_elevation_data(route):
...
route.elevation_data = results
route.save()
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免这种递归?
Tim*_*tes 14
添加一个关键字参数,告诉save不要递归:
def save(self, elevation_data=True, *args, **kwargs):
super(Route, self).save(*args, **kwargs)
if elevation_data:
from .tasks import get_elevation_data
get_elevation_data.delay(self)
Run Code Online (Sandbox Code Playgroud)
然后:
from celery.decorators import task
@task()
def get_elevation_data(route):
...
route.elevation_data = results
route.save(elevation_data=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |