Comments on: WAMP et les outils de dev Web Python existants http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-89994 Wed, 09 Jul 2014 08:50:21 +0000 http://sametmax.com/?p=11259#comment-89994 C’est une solution. Je ne l’ai jamais testé en prod, donc je suis très curieux de savoir si ça tient.

]]>
By: Seb http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-89957 Wed, 09 Jul 2014 07:51:39 +0000 http://sametmax.com/?p=11259#comment-89957 Pas évident de tout saisir mais on tâte le gros potentiel derrière cette techno !
En parlant de faire rentrer un carré dans un trou rond: j’ai une application très monolithique “de base” bien synchrone et j’aimerai en extraire certains services pour les rendre accessibles à tout moment pour n’importe qui (mon appli originale évidemment mais aussi d’autres applis web).
Exposer un service en utilisant autobahn/crossbar est faisable assez facilement à mon avis (j’aime bien autobahn.twisted.wamp.Application et les décos @app.register() .signal()…) mais câbler mon vieux bousin dessus est une autre histoire (modèle synchrone VS asynchrone d’autobahn) => je viens de tomber sur crochet (https://crochet.readthedocs.org/en/latest/) => est-ce une solution ?
En attendant, je vais creuser le sujet…

]]>
By: Sam http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84415 Fri, 04 Jul 2014 13:06:50 +0000 http://sametmax.com/?p=11259#comment-84415 Pour la task queue: non. Seule la task queu est un composant à part, les taches seraint justes des fonctions normales. Le principe serait le même que celery : un service qui spaw des workers et les workers qui depopent les files de tâche. La différence, c’est que le service principal et les workers sont tous des clients WAMPs qui peuvent donc utiliser PUB/SUB et RPC.

Dans le cadre des workers, ce n’est pas grave de bloquer les tâches car ils ne doivent, de toute façon, traiter qu’une chose à la fois puisque ce sont des files d’attente.

Il est facile d’utiliser l’ORM de django en dehors de django, il suffit de faire :

from django.conf import settings
 
settings.configure(la config de base de données)
 
from ton_app.models import TonModel

Et ça marche tout seul, à condition que ton PYTHON PATH soit ok.

Mais oui, tu as raison, dans beaucoup de cas on peut se contenter du push.

Dans tous les cas, ça ne peut pas encore “fitter smoothly together” parce que :

– WAMP est très jeune. On a besoin de vous pour dev l’écosystème. Viendez :)
– ce sont des technos fondamentalement incompatibles par nature. On essaye donc de faire rentrer un carré dans un trou rond. On va limer les bords avec le temps, mais ça ne se fera pas du jour au lendemain.

]]>
By: Jean-Baptiste http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84396 Fri, 04 Jul 2014 12:45:58 +0000 http://sametmax.com/?p=11259#comment-84396 Hi, i asked the question.
Telegraphy is actually the kind of thing I was thinking of.
To be honest: I had to read many times your answer (and read more about twisted) to start to understand something :)
Just one more question: for a task queue using WAMP each task would be an independant Component ? But for a task using django models how to import them, query on them ?
I don’t get how everything can fit together smoothly.
Maybe I expect to much for now. Django + some RT events will be sufficient anyway in 99% of my cases.

]]>
By: Sam http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84393 Fri, 04 Jul 2014 12:42:15 +0000 http://sametmax.com/?p=11259#comment-84393 Ouh, WAMP via gevent ! Faut voir si c’est WAMP 1 ou 2, mais c’est intéressant.

]]>
By: manatlan http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84377 Fri, 04 Jul 2014 12:27:28 +0000 http://sametmax.com/?p=11259#comment-84377 A noter aussi, l’existence de gevent-websocket.
Qui visiblement implémente (je ne sais pas dans quelle mesure) WAMP !

J’avais tester de mélanger bottle+gevent+gevent-websocket mais je ne suis pas arrivé a qqchose de satisfaisant ;-(

]]>
By: manatlan http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84368 Fri, 04 Jul 2014 12:19:08 +0000 http://sametmax.com/?p=11259#comment-84368 Merger un server Wamp (sur 8080) + WSGI (sur 8000)


from autobahn.twisted.wamp import Application

wamp = Application('demo')

@wamp.register()
def toto(param):
return "hello world "+param

#========================================================
from bottle import request, Bottle, abort, static_file
app = Bottle()

@app.get("/")
def hello():
return """hello"""

@app.route('/:path')
def static(path):
return static_file(path, root='.')

from twisted.web.server import Site
from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor
reactor.listenTCP(8000,Site(WSGIResource(reactor,reactor.getThreadPool(),app)))
wamp.run()

Mais, comme dit, faut pas faire du bloquant, côté WSGI …

]]>
By: Tobias http://sametmax.com/wamp-et-les-outils-de-dev-web-python-existants/#comment-84268 Fri, 04 Jul 2014 09:56:52 +0000 http://sametmax.com/?p=11259#comment-84268 The kind of intergration outlined goes far, far beyond a simple: “I want to publish a real-time event from Django”.

There is a project called Telegraphy, which is based on Autobahn/WAMP, and seems to go in the direction outlined:

* https://pypi.python.org/pypi/telegraphy
* https://github.com/machinalis/telegraphy/

I haven’t had a deep look into it though .. it’s using an old Autobahn with WAMP1.

]]>