Ошибка обработки почтового запроса в Django и получения сообщения «Слишком долго, чтобы завершить работу и был убит» - PullRequest
0 голосов
/ 09 мая 2019

Я запускаю сервер daphne на производстве и получаю следующую ошибку

Application instance <Task pending coro=<AsgiHandler.__call__() running at /home/coldbrewtech/frnd/backend/env/lib/python3.6/site-packages/channels/http.py:213> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/lib/python3.6/asyncio/futures.py:403, <TaskWakeupMethWrapper object at 0x7f0b49b6a6a8>()]>> for connection <WebRequest at 0x7f0b48daa438 method=POST uri=/api/getMessages clientproto=HTTP/1.1> took too long to shut down and was killed.

Это происходит в следующем запросе POST:

class GetRoomMessages(APIView):

    def post(self, request):

        room_no = request.data.get('room_no', None)
        message_id = request.data.get('message_id', None)
        order = request.data.get('order', None)
        message_instance = None

        if(order == 'old'):
            try:
                message_instance = Message.objects.filter(room_no=room_no, id__lt = message_id).order_by('-id')
            except Exception as e:
                print(e)
                return status_500()
        elif(order == 'new'):
            try:
                message_instance = Message.objects.filter(room_no=room_no, id__gt = message_id).order_by('id')
            except Exception as e:
                print(e)
                return status_500()

        if(message_instance is not None):
            serializer = MessageSerializer(message_instance, many=True)
            return status_200("success", serializer.data)
        else:
            return status_400("Invalid Request")

Я не уверен, почему это происходит, ноэто происходит, когда сериализуется много сообщений.Я не думаю, что для сериализации требуется время, скорее, я думаю, что размер ответа может быть слишком большим.Так ли это вообще?Если нет, скажите, пожалуйста, в чем причина того же самого?

...