我正在使用Twisted Klein开发异步Web服务。部分代码如下:
@inlineCallbacks
def test(input1):
try:
result = yield function(input1)
print result
returnValue(result)
except:
returnValue("None")
pass
我将此test
函数作为我的Web服务的一部分,每次从其他函数调用test
函数返回“None”时。但是,在服务器屏幕上,它会打印出我想要的正确结果(正确执行try中的print result
行,而不使用returnValue(result)
。我对异步编码不是很熟悉,但除了和yield之外,还有什么我应该小心的吗?感谢。
答案 0 :(得分:2)
首先,你永远不应该有一个裸except
条款。 (有例外,但一般来说,抓住特定错误会更好。)
其次,来自returnValue上的扭曲文档:
注意:目前通过引发从BaseException派生的异常来实现。您可能想要更改任何'除了:'除了例外情况之外的条款:'条款,以免捕获此异常。
另外:虽然从生成器内部调用的任意函数中调用此函数时,此函数当前有效,但不要依赖此行为。
正在发生的正确结果是打印,然后您拨打returnValue
,这会引发异常,导致您的代码返回None