Как использовать 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.