相关疑难解决方法(0)

Celery 在将我的查询集 obj 作为参数传递时引发错误

我试图执行一个周期性任务,所以我使用 celery 与 Django 1.8 和 Django Rest Framework 和 Postgres 作为数据库。当我尝试将 obj 发送到任务时,我得到TypeError: foreign_model_obj is not JSON serializable. 如何将我的查询集对象传递给我的任务。

视图.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)
Run Code Online (Sandbox Code Playgroud)

任务.py:

@celery_app.task(name="my_celery_task")
def my_first_celery_task(mymodel_obj):
    # ... updating obj attributes
    mymodel_obj.save()
Run Code Online (Sandbox Code Playgroud)

python django postgresql celery django-rest-framework

3
推荐指数
2
解决办法
2791
查看次数

Django异步更新单页模板

我有一个带有此函数的django视图来获取模板的数据:

def get_context_data(self, **kwargs):
  context = super(MyView, self).get_context_data(**kwargs)
  context['extra_data'] = a_long_running_function()
  return context
Run Code Online (Sandbox Code Playgroud)

extra_data显示在表中.如上面的函数所示,由于计算,页面需要很长时间才能加载extra_data.

那么如何直接显示页面,然后在extra_data计算时更新表格?

我理解如何使用芹菜来a_long_running_function异步执行,但我不知道如何制作页面(现在已加载,但缺少表格数据),获取数据并自动更新?

django templates asynchronous

2
推荐指数
2
解决办法
2538
查看次数