Python xmpp jabber client en una aplicación web de tornado

Soy progtwigdor de escritorio pero quiero aprender algo sobre servicios web. Me decidí por el python. Estoy tratando de entender cómo funcionan las aplicaciones web. Sé cómo crear un sitio web básico de tornados (solicitud – respuesta) y un cliente Jabber en funcionamiento, pero no sé cómo mezclarlos. ¿Puedo usar cualquier componente de Python en servicios web? ¿Deben tener una estructura específica (sync o async)? Porque estoy atrapado en los controladores de bucle:

Si tornado inicia el servicio web por comando:

app = Application() app.listen(options.port) tornado.ioloop.IOLoop.instance().start() 

… entonces, ¿cómo (dónde) puedo iniciar el bucle xmpp?

 client.connect() client.run() 

Creo que el bucle de escucha del tornado debería manejar la escucha xmpp, pero no sé cómo

Saludos.

Edición: me olvidé. Estoy usando pyxmpp2

Creo que lo que estás intentando lograr no es factible en un hilo de python, ya que ambos intentan escuchar al mismo tiempo, lo que no es posible en un solo hilo. ¿Puedo sugerir mirar este tutorial sobre subprocesos?

Otra pregunta sería si está intentando hacer un xmpp basado en web o simplemente tener un servidor xmpp y html ejecutándose en el mismo script. Si desea probar el primero, le aconsejaría que analice la comunicación entre subprocesos con zeromq o con la cola.

Quizás WebSocketHandler y Thread te ayuden.

Manifestación

 clase BotThread (threading.Thread):

     def __init __ (self, my_jid, settings, on_message):
         super (BotThread, self) .__ init __ ()
         #EchoBot es el cliente de pyxmpp2
         self.bot = EchoBot (my_jid, settings, on_message = on_message)

     def run (self):
         self.bot.run ()


 clase ChatSocketHandler (tornado.websocket.WebSocketHandler):
     def abierto (auto): 
         #init cliente xmpp
         my_jid = 
         configuraciones = 
         bot = BotThread (my_jid, settings, on_message = self.on_message)
         bot.start ()