tornadio2
tornadio2 copied to clipboard
example gen.py not working
On run example gen.py on tornado 2.3 raised exception
ERROR:root:Failed to handle message: Traceback (most recent call last):
File "/home/pooh/works/testtornado/lib/python2.6/site-packages/tornadio2/persistent.py", line 142, in on_message
self.session.raw_message(message)
File "/home/pooh/works/testtornado/lib/python2.6/site-packages/tornadio2/session.py", line 410, in raw_message
ack_response = conn.on_event(event['name'], args=args)
File "/home/pooh/works/testtornado/lib/python2.6/site-packages/tornadio2/gen.py", line 113, in wrapper
run(args, kwargs)
File "/home/pooh/works/testtornado/lib/python2.6/site-packages/tornadio2/gen.py", line 84, in run
data.runner = SyncRunner(gen, finished)
File "/home/pooh/works/testtornado/lib/python2.6/site-packages/tornadio2/gen.py", line 45, in __init__
super(SyncRunner, self).__init__(gen)
TypeError: __init__() takes exactly 3 arguments (2 given)
I replace in file tornadio2/gen.py line 84 from
data.runner = SyncRunner(gen, finished)
on
data.runner = Runner(gen, finished)
I think class SyncRunner no more need
Why issue closed? I have the same problem ...
Because I can not reproduce it. Works without any problems on Tornado 2.4.1.
I see the Runner class of tornado 2.4.1 and has a new parameter in init:
def __init__(self, gen, deactivate_stack_context):
SyncRunner calls the super init in this way:
super(SyncRunner, self).__init__(gen)
I think this is the problem.
Ah, this is interoperability issue between engine
and sync_engine
. gen.py example works because it is using sync_engine
.
Edit: If you don't care about executing actions in order, feel free to use standard tornado.gen.engine
I think i'm using sync_engine too. In my class:
class MeteoDataSetAPI(SocketConnection):
...
@gen.sync_engine
def on_event(self, name, *args, **kwargs):
return super(MeteoDataSetAPI, self).on_event(name, *args, **kwargs)
Is it right?