2011-02-14 1 views
5

Je suis actuellement en train de planifier une application Web qui nécessite l'écoute permanente d'une connexion socket ouverte et l'écriture des choses spécifiques à une base de données. Pour être connu de flask (cadre de mon choix) et de python en général, je veux jouer à araound avec twitter-streaming-api.Django/Flask Implentation: Ecoute en permanence via HTTP ou Socket. (en arrière-plan)

Le problème essentiel est le même. Comment implémenter un "Connection-Listener" permanent pour les deux types de connexion?

Est-ce la meilleure façon de le faire?

tweepy Streaming API integration with Django

Je n'aime pas en quelque sorte l'idée d'avoir à mettre en œuvre un système deamon sur la machine.

Modifier: Bien sûr, je veux servir les choses aux utilisateurs via HTTP. Tout cela devrait être non-bloquant ...

Merci!

Répondre

5

Si vous voulez que le système soit non-bloquant, ni Flask ni Django ne fourniront nativement le support que vous recherchez. Vous devriez probablement tester Twisted car c'est le projet python le plus mature pour les E/S non bloquantes: http://twistedmatrix.com/trac/

Il fournit un ensemble solide d'API pour les serveurs à socket. Si vous avez besoin d'intégrer une application web "régulière", votre meilleur pari serait Django car je ne crois pas que quiconque ait fait une intégration Twisted-Flask (je peux me tromper, je ne l'ai pas vu). Voici un lien expliquant comment configurer Django et Twisted dans le même environnement: http://dreid.org/2009/03/twisted-django-it-wont-burn-down-your.html/

Note: aucun démon système requis;)

+1

Merci pour ce lien. (Django + Twisted-Integration). Je savais déjà tordu, mais je n'ai jamais essayé parce que j'ai toujours entendu parler de sa courbe d'apprentissage abrupte. Je pense que je vais essayer l'intégration de flask, puisque flask est 100% compatible wsgi et que le lien semble juste utiliser le wsgi-handler du twisted. Nous verrons. D'après ce que je comprends, la webapp (django/flask) fonctionnera en mode syncronous/blocking (pas asnync, magic monkeypatch-thing) non? – crushervx

+1

Oui, le développement webapp avec des systèmes d'E/S non bloquants est encore un concept assez jeune. Django n'y est pas encore arrivé - toutes les actions asynchrones peuvent être un casse-tête à gérer dans les systèmes actuels (bien que node.js ne soit pas trop mauvais si cela ne vous dérange pas Javascript). – Shakakai

2

Je recommande Eventlet pour les actions événementielles avec socket ouvert.

Les autres options en python pour la gestion de l'API en temps réel Twitter sont twisted et tornado.

Questions connexes