【发布时间】:2016-04-18 08:15:15
【问题描述】:
我试图执行一个周期性任务,所以我使用 celery 和 Django 1.8 以及 Django Rest Framework 和 Postgres 作为数据库。当我尝试将我的 obj 发送到任务时,我得到TypeError: foreign_model_obj is not JSON serializable。如何将我的查询集对象传递给我的任务。
views.py:
class MyModelCreateApiView(generics.CreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
authentication_classes = (TokenAuthentication,)
def create(self, request, *args, **kwargs):
data = dict()
data['foreign_model_id'] = kwargs['pk']
foreign_model_obj = MyForeignModel.objects.get(id=data['foreign_model_id'])
obj = MyModel.objects.create(**data)
result = serialize_query(MyModel, {"id": obj.id})
local_time = foreign_model_obj.time
my_celery_task.apply_async([foreign_model_obj], eta=local_time)
return Response(result)
tasks.py:
@celery_app.task(name="my_celery_task")
def my_first_celery_task(mymodel_obj):
# ... updating obj attributes
mymodel_obj.save()
【问题讨论】:
标签: python django postgresql django-rest-framework celery