2011-11-23 9 views
3

D'abord il y a TornadoWeb, il est asynchrone et non bloquant, et de l'autre côté: il y a Dojo. Si j'utilise une tornade, comment puis-je communiquer avec dojo?Notification en temps réel en utilisant Python

Et l'autre problème, si j'utilise une solution WSGI comme Flask, puis-je faire une "notification" avec eux? Ou dojo doit avoir une "connexion ouverte" pour parler avec le serveur, ce qui n'est pas fait en utilisant WSGI? signifier; Apache ou CherryPy ne fonctionnera pas avec Dojo?

Et si WSGI ne peut pas parler avec Dojo, qu'en est-il de l'utilisation de Atom ou Feeds pour programmer les notifications sous WSGI? NB: la notification sera divisée en deux: notification sur les produits pour tous les utilisateurs, et notification sur des utilisateurs spécifiques; il utilisera des sessions ...

Et dernière question, qu'en est-il de WebSockets et HTML5? le serveur doit-il être compatible pour utiliser cette option avec le navigateur?

+2

http://www.tornadoweb.org/documentation/websocket.html + http://dojotoolkit.org/features/1.6/dojo-websocket devrait vous donner quelques conseils ... – Philippe

+0

donc je dois utiliser les deux ? – Abdelouahab

+1

Eh bien, le serveur envoie des messages, le client les reçoit, et vice versa ... alors oui! – Philippe

Répondre

3

Je ne sais pas pourquoi Dojo semble être le problème dans la communication. Dojo vous fournit des wrappers AJAX que vous pouvez utiliser pour des notifications presque en temps réel dans une application web avec peu de charge en faisant une requête AJAX toutes les 1-5 secondes.

Si l'application a beaucoup d'utilisateurs, les requêtes AJAX fréquentes peuvent causer trop de frais rapidement. Heureusement, vous n'avez pas besoin d'utiliser Dojo pour communiquer avec le serveur. Vous pouvez jeter un oeil à Socket.IO et, si vous voulez coller à Python sur le côté serveur, gevent-socketio. Il utilise la meilleure technologie disponible dans le navigateur Web (WebSockets, prises Flash, comète) pour fournir une communication en temps réel.

Il y a aussi dojox.socket mais je pense que c'est moins robuste (et beaucoup moins populaire). Vous devez cependant vous rappeler qu'en utilisant n'importe quel type de connexion persistante (que ce soit WebSockets, Socket.IO ou dojox.socket), vous avez besoin d'un serveur asynchrone capable de maintenir de nombreuses connexions simultanées.

La solution que vous choisissez doit dépendre de l'application Web elle-même et de sa base d'utilisateurs.

+0

mais que diriez-vous de tornado, isent une solution pour python? – Abdelouahab

+1

C'est. En fait, vous pouvez utiliser Tornado ou gevent pour écrire un serveur asynchrone. Je viens de découvrir qu'il existe aussi une [implémentation de Socket.IO pour Tornado] (https://github.com/MrJoes/tornadio2). Si vous connaissez Tornado, allez-y. Si ce n'est pas le cas, alors [quelques benchmarks] (http://nichol.as/benchmark-of-python-web-servers) indiquent que gevent peut mieux fonctionner (c'est un vieux benchmark et ne tient pas compte des performances de WebSockets). –

+0

oui, mais Tornado est aussi un framework, donc il a un moteur de template et un répartiteur d'URL goog comme celui utilisé par web.py – Abdelouahab