Выключение 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, но с тем же результатом. Спасибо всем.