Этот код работает в Python 3.4.3 с использованием Tornado 4.1 - он спит в течение 1 секунды, а затем печатает «Hello World! 123». Но когда компилируется с помощью Cython (я пробовал версии 0.20.1post0 и 0.23dev), он ничего не делает.Tornado coroutines не работает в Cython
import tornado.ioloop
import datetime
from tornado import gen
@gen.coroutine
def test():
yield gen.Task(ioloop.add_timeout, datetime.timedelta(seconds=1))
return 123
@gen.coroutine
def hello_world():
print('Hello World! {}'.format((yield test())))
ioloop = tornado.ioloop.IOLoop().instance()
ioloop.run_sync(hello_world)
Команды я использовал для создания и запуска версии Cython:
cython --embed -o hello.c hello.py
gcc -shared -fPIC -O0 -Wall -I/usr/include/python3.4 -o hello.so hello.c
python -c 'import hello'
Есть много сообщения об ошибках, связанные с cython и сопрограммами, это более чем вероятно другой. –