我正在使用celery=4.3
Django 包和 Django 2.2.6。
我注意到当我尝试从芹菜任务功能更新对象时,该对象未保存
@app.task
def update_object(object_id, points):
object = MyObject.objects.get(pk=object_id)
object.update_points(points)
我的对象如下所示:
class MyObject(models.Model):
....
def update_points(self, points):
self.points += points
self.save()
我正在调用芹菜任务:update_object.delay(object_id, points)
这不起作用:/有人有什么建议吗?
你可以尝试使用update_object.delay((object_id, points))
,参数作为元组。
通常,您需要传递 *args 和 **kwargs(请参阅此文档(
快速备忘单
T.delay(arg, kwarg=value)
Star arguments shortcut to .apply_async. (.delay(*args, **kwargs) calls .apply_async(args, kwargs)).
T.apply_async((arg,), {'kwarg': value})
T.apply_async(countdown=10)
executes in 10 seconds from now.
T.apply_async(eta=now + timedelta(seconds=10))
executes in 10 seconds from now, specified using eta
T.apply_async(countdown=60, expires=120)
executes in one minute from now, but expires after 2 minutes.
T.apply_async(expires=now + timedelta(days=2))
expires in 2 days, set using datetime.