Ниже приведена конфигурация моего Django приложения:
django = 2.2.11
djangorestframework = 3.9.2
Python = 3.8.2
Я представляю набор Rest apis для интерфейса js, который подключается к Postgres с использованием многоуровневой архитектуры views (controller) - services - data_layer
. В слое данных я выбираю данные, используя Connection.Cursor
, затем преобразую данные, выбранные, используя cursor.fetchall
.
По умолчанию остальные API являются синхронными API, я пытаюсь найти способ сделать их Asyn c, так что масштабируемость системы может быть увеличена, в противном случае каждый вызов блокирует основной поток.
Я пробовал следующие параметры:
Использование библиотеки asyncio, но Я не могу сделать полную цепочку вызовов Asyn c. Обычно я получаю сообщение об ошибке, что ожидаемый возврат был Response / HttpResponse, но метод возвращает Co-рутину. Я могу найти примеры, содержащие простые методы asyn c, но нет примера Django Rest API
Попробовал следующую ссылку, который использует исполнителя Threadpool для разделения каждого вызова потока в самом контроллере, хотя проблема заключается в том, где выполнить вызов Asyncio в методе Main, как показано в ссылке, поскольку эти API-интерфейсы вызываются извне.
Может помочь aiohttp, но не уверен, но если у кого-то есть другой пример, мне придется прибегнуть к дизайну сервисного брокера с использованием посредника, такого как Redis, который, на мой взгляд, не требует сложностей. *
Любая помощь / ссылка на topi c приветствуется.