Платформа Python и выбор сервера для разработки веб-сокет-приложения Python - PullRequest
0 голосов
/ 12 марта 2019

Я хочу разработать приложение на стороне сервера, которое будет предоставлять услуги через websocket, а также HTTP клиентам, использующим браузер и другие не браузерные клиенты.

Объем моей заявки охватывает следующее :

  1. Обеспечение веб-сокета и службы http через один порт t
  2. Обеспечить хороший механизм аутентификации (желательно, как JWT)
  3. Будет несколько операций RPC и несколько операций чтения / записи небольших файлов вместе с редкой загрузкой / загрузкой файлов.
  4. Нужно иметь паб / саб через websocket
  5. Приложению необходимо будет взаимодействовать с сервером Java, работающим на другом порту.
  6. Скорость и низкий объем памяти очень важны. (Макс. 60 МБ памяти потребление разрешено)
  7. клиентская нагрузка будет очень меньше (максимум 5 одновременно)
  8. Целевой версией будет python 3.5 +

Проблема, с которой я столкнулся, заключается в выборе правильной технологии для этого варианта использования.

  1. Autobahn | Python имеет хороший веб-сокет для asyncio и витой, но с websocket & asyncio я не могу эффективно запустить http-службу также через тот же порт.

  2. Autobahn | python wamp выглядит хорошо, но не существует хорошего примера для службы http, а главное - нет примера http с websocket для asyncio.

  3. Автобан | python , скрученный с веб-сокетом и http (wsgi через скрипт rpy) - это единственное, что я мог бы заставить работать . Но поскольку чтение по сети искажено, оно раздутое и занимает много места в памяти, и большинство предложений говорят о том, что оно не подходит для простого веб-сервиса.

я благодарен @oberstet (автору автобана) за полезные примеры, которые я нашел :) до сих пор

  1. посмотрел на aiohttp , но не нашел пример того, что мне нужно.

  2. asyncio сам по себе не включает в себя сервер wsgi, который может работать через веб-сокеты с auth и pub / sub.

  3. Я также искал другие варианты, но либо существует проблема асинхронной синхронизации, либо websocket / http, не предлагаемый на том же порту, либо pub / sun не поддерживается "из коробки".

Я надеялся, что некоторые эксперты по Python помогут мне выбрать правильную технологию фреймворка / сервера для этого. Или даже предложить комбинацию отдельных компонентов, которые могут помочь достичь этого. Я довольно плохо знаком с Python, но прочитал кое-что хорошее об этом.

...