Django 1.10 & Socket.IO с Python 3

Я пытаюсь найти репозиторий "django-socketio" для использования в моем проекте. Я использую django 1.10 и python3. Я действительно искал, но я не нашел рабочих примеров с python3.

Мое плохое обходное решение

  • Я начал проект node и поместил socket.io внутри маршрута
  • В моем представлении django я отправляю возвращаемые данные на node маршрут с моей сессией django
  • Я управляю сессией, исходящей из django внутри моего node, и испускаю внутри маршрут к клиенту.

Эта работа, но я не могу поверить, что это хорошее решение. У кого-нибудь есть другие идеи? Или рабочие примеры с python3 и socketio?

Спасибо!

Ответ 2

Если вы хотите использовать Websockets и Django, вы должны рассмотреть https://github.com/django/channels. Альтернатива в Python будет использовать python tornado http://www.tornadoweb.org/en/stable/ или aiohttp (Python3.4 +) http://aiohttp.readthedocs.io/en/stable/. Многие из реализаций Django с асинхронностью через gevent устарели, экспериментальны или оставлены, я нашел этот https://github.com/jrief/django-websocket-redis, но использует Redis, поэтому нет причин не возвращаться к django-каналам.

На мой взгляд, поскольку Socket.io - это слой поверх Websockets, вы не найдете ни одного проекта, полностью поддерживающего спецификацию Socket.io как ws-сервера в Python, поскольку он является родным Node.js, официально не перенесенным на Python, по крайней мере, самый последний, который вы, вероятно, используете, если вам действительно нужны функции Socket.io, придерживайтесь Node.js и создайте простой API REST в Django для асинхронной загрузки данных брандмауэра из Nodejs (REST django API будет всегда быть синхронным по своей природе), это лучший выстрел, который вы, вероятно, имели бы.