Как использовать Async Redis Client + Django в python?

Я пытаюсь создать распределенный семафор с помощью Redis для использования в моем Django-приложении. Это нужно для ограничения одновременных запросов к API. Я использую asyncio в redis-py. Однако я хочу создать пул соединений для совместного использования запросов, так как я получал ошибку "Max clients reached". Таким образом, я создал общий пул соединений в settings.py, который я использую в своем классе семафора. Однако при одновременном выполнении запросов я получаю ошибку got Future <Future pending> attached to a different loop. Вот мой код:

, которые я затем использую в моих adrf async представлениях.

Что я делаю не так? Возможно ли это?

Ответ оказался совершенно несвязанным. На самом деле это Django runserver не справлялся со смесью асинхронных и неасинхронных конечных точек. По какой-то причине это проявилось только сейчас, когда я разделил пул соединений Redis через settings.py.

Исправление заключалось в локальном запуске с uvicorn, что решило проблему. Другим исправлением было бы перевести все конечные точки в режим async.

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