Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

example gen.py not working #49

Open
antipooh opened this Issue · 5 comments

3 participants

@antipooh

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

@mrjoes mrjoes closed this
@faxioman

Why issue closed? I have the same problem ...

@mrjoes
Owner

Because I can not reproduce it. Works without any problems on Tornado 2.4.1.

@faxioman

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.

@mrjoes
Owner

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

@mrjoes mrjoes reopened this
@faxioman

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.