sql >> データベース >  >> RDS >> PostgreSQL

クエリセットobjをパラメータとして渡すときにCeleryがエラーを発生させる

    idを送信するだけです インスタンスのインスタンスを作成し、タスク内のオブジェクトを取得します。インスタンスを渡すことはお勧めできません。その間に変更される可能性がある 、特に、見た目どおりにデプレイでタスクを実行していること。

    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.id], eta=local_time) # send only the obj id
            return Response(result)
    

    tasks.py:

    @celery_app.task(name="my_celery_task")
    def my_celery_task(mymodel_obj_id):
        my_model_obj = MyModel.objects.get(id=mymodel_obj_id) # retrieve your object here
        # ... updating obj attributes
        mymodel_obj.save()
    


    1. 日付ごとに週を表示

    2. すべての列を連結するMySQL

    3. AJAXでのエンコーディングの問題

    4. MySQLコマンドExplain無視LIMIT?