1

我正在尝试使用Tornado 的同步样式“gen”工具以非阻塞样式运行简单的 echo 函数:

import tornado.web
import tornado.gen
import logging

def echo(message):
    return message

@tornado.gen.engine
def runme():
    response = yield tornado.gen.Task(echo, 'this is a message')
    logging.warn(response)

runme()

据我所知,此代码与文档中的演示代码没有显着不同,减去不必要的请求处理程序的东西 - 我没有处理任何 HTTP 请求,AFAICT 与异步运行某些东西是正交的。然而,这总是失败:

Traceback (most recent call last):
  File "./server.py", line 46, in <module>
runme()
TypeError: wrapper() takes at least 1 argument (0 given)

我到底在哪里错过了论点?如何让 Tornado 异步运行这个函数?

4

1 回答 1

2

任务实际上并没有为正在运行的函数进行回调,并在函数返回时启动回调,正如我最初所想的那样。

我需要在自己运行的任务中创建一个回调,并调用它,即:

import tornado.web
import tornado.gen
import logging

def echo(message, callback=None):
    callback(message)

@tornado.gen.engine
def runme():
    response = yield tornado.gen.Task(echo, 'this is a message')
    logging.warn(response)

runme()
于 2012-11-21T17:42:21.180 回答