Выключение RabbitMQ приводит к зависанию Django

У меня есть этот класс в моем проекте:

class CreateReportConsumer(AsyncJsonWebsocketConsumer):
    async def connect(self):
        if self.scope['user'].is_authenticated:
            await self.accept()
        else:
            await self.close(401)

    async def disconnect(self, code):
        await self.close(code)

    async def receive_json(self, content, **kwargs):
        task_id = content.get('task_id')
        if task_id:
            result = AsyncResult(task_id)
            start = datetime.now()
            while not result.ready():
                await sleep(1)
                if datetime.now() - start > timedelta(seconds=60 * 5):
                    await self.send_json(self.construct_answer([False, 'Connection timed out']))
                    await self.close(500)
                    break
            else:
                if result.state == 'SUCCESS':
                    if len(result.result) == 2:
                        await self.send_json(self.construct_answer(result.result))
                        await self.close(200)
                    else:
                        await self.close(500)
                else:
                    await self.send_json(result.result)
                    await self.close(500)
        else:
            await self.close(500)

    def construct_answer(self, data):
        return {'success': data[0], 'message': data[1]}

Он получает результат от задачи Celery, когда кто-то использует это. Но если я отключаю RabbitMQ (я использую для этого контейнер docker), он замирает. Есть ли способ избежать этого? Я пробовал использовать pika, но с тем же результатом. Спасибо всем.

Вернуться на верх