[pyar] [DJANGO] SocketIO Client in django

Carlos Matías cmdelatorre en gmail.com
Lun Dic 28 09:24:36 ART 2015


Estimado Pedro, me parece que lo que vas a tener que hacer es tener un
servidor real-time en paralelo al Django. Desde ahí podrías acceder a la DB
y contestar los pedidos asíncronos


Según entiendo, para eso se usan Twisted (https://twistedmatrix.com/trac/)
o Tornado (http://www.tornadoweb.org/en/stable/).

En algún momento quisimos pavimentar ese camino con
http://telegraphy.readthedocs.org/ pero ahora quedó desactualizado. Igual
te puede servir como referencia.
Fijate que la idea a futuro es usar Crossbar (http://crossbar.io/) que
también te puede servir.


Saludos


> ---------- Forwarded message ----------
> From: Pedro Pezzarini <jose2190 en gmail.com>
> To: Python Argentina <pyar en python.org.ar>
> Cc:
> Date: Sun, 27 Dec 2015 16:31:15 -0300
> Subject: [pyar] [DJANGO] SocketIO Client in django
> ---- Contexto
> Hola querida comunidad, desde hace tiempo vengo desarrollando proyectos en
> Django y hasta ahora no he tenido grandes problemas.
> Pero ahora surgió la necesidad de interconectar en tiempo real multiples
> instancias de los sistemas corriendo que se encuentran en diferentes hosts.
>
> Mi idea es utilizar socketio y conectar a cada sistema para obtener las
> estadísticas en tiempo real, es decir, conectar a la ejecución de django
> como cliente al server.
>
> ---- Problema
> La pregunta es, como hacer que el socket quede escuchando sin que se
> bloquee la ejecucion de django?
>
> Obviamente si alguien tiene una mejor forma de resolver este problema, soy
> todo ojos para leerlo.
>
> Desde ya gracias por el tiempo que emplean en responder.
> Saludos, Pedro
>
>
>
> Esto es lo que estoy intentando hacer sin exito con los events del socket:
> ---- Codigo
>
> from socketIO_client import SocketIO, LoggingNamespace
> from redis import Redis
> from rq import Queue
> from threading import Thread
>
> class DjangoLive(object):
> """docstring for DjangoLive"""
> def __init__(self, host, port):
> super(DjangoLive, self).__init__()
> self.host = host
> self.port = port
> self.connection = None
> self.thread = None
>
> def Connect(self):
> self.connection = SocketIO(self.host, self.port, LoggingNamespace)
> self.connection.on('hi', self.testResponse)
> self.connection.emit('hi', 'hello')
> self.thread = Thread(target = self.Wait)
> self.thread.start()
> #self.thread.join()
>
> def Wait(self):
> self.connection.wait()
>
> def testResponse(self, *args):
> print('testResponse', args)
>
> liveconnection = DjangoLive('localhost', 8080)
> liveconnection.Connect()
>

-- 
Carlos Matías
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151228/a1041862/attachment.html>


Más información sobre la lista de distribución pyar