0

我正在使用 Twisted Klein 开发异步 Web 服务。部分代码如下:

@inlineCallbacks
def test(input1): 
    try:
        result = yield function(input1)
        print result
        returnValue(result)
    except:
        returnValue("None")
        pass

我将此test函数作为我的 Web 服务的一部分,每次我test从其他函数调用该函数时都返回“无”。但是,在服务器屏幕上,它会打印出我想要的正确结果(print resulttry 中的行已正确执行,只是returnValue(result)未使用)。我对异步编码不是很熟悉,但是除了与yield一起尝试之外,还有什么我应该小心的吗?谢谢。

4

1 回答 1

2

首先,你永远不应该有一个裸except子句。(有例外,但一般来说,最好是捕获特定的错误。)

其次,来自关于 returnValue 的扭曲文档:

注意:目前这是通过引发从 BaseException 派生的异常来实现的。您可能希望将任何“except:”子句更改为“except Exception:”子句,以免捕获此异常。

另外:虽然这个函数目前可以在从生成器中调用的任意函数中调用时工作,但不要依赖这种行为。

发生的事情是您的正确结果是打印,然后您调用returnValue,这会引发异常,导致您的代码返回None

扭曲的文档

于 2016-06-07T17:56:06.983 回答