Django a-t-il un moyen d'ouvrir une connexion HTTP longue interrogation?
Laisser la connexion ouverte, jusqu'à ce qu'un événement se produit.
source d'informationauteur TIMEX
Vous devez vous connecter pour publier un commentaire.
Laisser la connexion ouverte, jusqu'à ce qu'un événement se produit.
source d'informationauteur TIMEX
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil à Django /Comet (Push): Moins de tous les maux? ou La dernière recommandation de la Comète en Python? - COMÈTE est un autre nom pour "ajax le long du scrutin".
Apparemment, l'approche la plus commune est de ne pas le faire directement dans django, mais avec l'aide d'un autre démon (probablement parce que, par exemple, Apache ne pas faire bien avec beaucoup de longue durée de vie des connexions). Aujourd'hui, nodejs+socketio est assez populaire pour cela (et il peut même utiliser les WebSockets) - vous avez juste besoin de trouver un moyen agréable de passer des données entre les deux choses. Si c'est unidirectionnelle (par exemple le diffuse à tous les clients connectés) redis pubsub de la file d'attente n'est pas une mauvaise option pour cela.
Mais http://code.google.com/p/django-orbited/ est probablement le plus djangoish solution.
Pour les futurs lecteurs 🙂
J'ai créé un simple interrogation django points de vue de classe à l'aide de Gevent, vous pouvez le trouver sur github sur https://github.com/tbarbugli/django_longpolling ou l'obtenir à partir d'pypi (django_longpolling)
EDIT: j'ai fait un peu plus d'expérience /de déploiement avec django, le temps d'interrogation /async travailleurs et je peux dire que si possible d'opter pour l'une externe démon est un très bon choix, surtout si vous utilisez la db (lors de l'utilisation asynchrone travailleur vous avez besoin d'une connexion db de la piscine ou vous allez avoir le montant de travailleur connexions lié à votre base de données des limites de connexion qui n'est pas desiderable).
Je pense que le meilleur moyen de communication asynchrone avec Django est d'avoir un serveur de nœud d'écoute dans un autre port et l'utilisation de l'api client de la Prise.io. De cette façon, vous n'êtes pas dépendant de l'appui des modules pour django et est très simple: Noeud à l'écoute de la demande du client, convertir cette demande dans un message de demande et l'envoyer à Django pour le port sur lequel écouter Django.
Est le meilleur moyen je pense.
server.js
views.py
index.html