Quel est le meilleur serveur socket.io à utiliser avec Django - gevent ou tornadio2?
Question
Je travaille sur une WebApp utilisant backbone.js et socket.io côté client et Django côté serveur. Je voudrais faire "pousser" depuis le serveur lorsque les données changent (comme dans une application de chat). Je suis tombé sur deux implémentations de socket.io en Python avec une intégration Django qui semblait prometteuse:
- django-socketio qui est basé sur gevent et gevent-socketio
- Intégrations basées sur Tornado qui utilisent torandio2 telles que tornadio-with-django et django-tornadio
Gevent et tornado ont tous deux de très bonnes performances , je ne suis donc pas intéressé par d'autres infrastructures de connexion asynchrone. La seule autre exigence est l'utilisation de SSL pour la connexion - pas de transmission de texte brut.
Alors entre ces deux approches, quelle serait la plus simple à mettre en œuvre? Existe-t-il un bon framework basé sur un abonnement pour tornadio2 similaire à la façon dont django-socketio le fait pour gevent?
Une autre option que j'ai rencontrée est django-serverpush , également basé sur TornadIO2. Elle s'intègre mieux à Django que les autres applications TornadIO2, mais l'implémentation doit encore être améliorée avant d'être prête pour la production.
La solution
Au moment d'écrire cette réponse, django-socketio n'a toujours pas été entièrement mis à jour pour fonctionner avec le dernier socket.io.
Tornado / TornadIO2, par contre, sont bien entretenus, et avec quelques extensions personnalisées, j'ai pu les faire fonctionner très bien.Après avoir lancé mon produit, j'espère passer du temps à ouvrir mes modifications.D'ici là, je serai ravi de répondre à toutes vos questions sur la façon de faire fonctionner cela.
Autres conseils
Honnêtement, je dirais qu'ils sont assez similaires.C'est plus une opinion.Pour les performances, je pense que gevent a plus de performances en fonction de ce que j'ai lu, mais vous devriez faire vos propres tests pour savoir lequel est le plus performant.