如何解决当使用celery更新Django模型字段时,避免递归save
|| 我正在重写模型的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)
get_elevation_data任务:
from celery.decorators import task
@task()
def get_elevation_data(route):
...
route.elevation_data = results
route.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)
接着:
from celery.decorators import task
@task()
def get_elevation_data(route):
...
route.elevation_data = results
route.save(elevation_data=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。