Fredrik Hallenberg created PROTON-2404:
------------------------------------------

             Summary: [python] Tornado container does not work both timer and 
connection
                 Key: PROTON-2404
                 URL: https://issues.apache.org/jira/browse/PROTON-2404
             Project: Qpid Proton
          Issue Type: Bug
          Components: examples
            Reporter: Fredrik Hallenberg


I am trying to get the Python tornado container working with qpid proton 0.34. 
My goal is to create a tornado server that can also send and receive amqp 
messages using a timer. With the below example tornado server works fine but I 
am not able to run both timer and amqp connection. If the schedule call below 
is uncommented the amqp connection stops working. I can also comment out 
create_sender/receive and then timer ticks works.
 
It seems to me that something is missing in the tornado container. Although it 
just an example I think it is essential to be able to combine the amqp event 
loop with event loops in other libraries. It would be good to also have a 
container based on asyncio.
 

from proton import Message
from proton.handlers import MessagingHandler
from proton_tornado import Container

import tornado.ioloop
import tornado.web

class Client(MessagingHandler):
    def __init__(self, url):
        super(Client, self).__init__()
        self.url = url

    def on_timer_task(self, event):
        print('tick')
        self.container.schedule(1, self)

    def on_start(self, event):
        self.container = event.reactor
        self.sender = event.container.create_sender(self.url)
        self.receiver = event.container.create_receiver(self.sender.connection)
        #self.container.schedule(1, self)

    def on_link_opened(self, event):
        print(event)

class ExampleHandler(tornado.web.RequestHandler):
    def get(self):
        self.write('hello')

loop = tornado.ioloop.IOLoop.instance()
client = Client("localhost:5800")
client.container = Container(client, loop)
client.container.initialise()
app = tornado.web.Application([tornado.web.url(r"/hello", ExampleHandler)])
app.listen(8888)
loop.start()
 
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to