gpt4 book ai didi

Python BadYieldError : yielded unknown object HTTPError ('HTTP 599: Connection closed' , )

转载 作者:太空狗 更新时间:2023-10-30 02:21:30 26 4
gpt4 key购买 nike

我想知道为什么在这个函数中:

@tornado.gen.engine
def check_status_changes(netid, sensid):

como_url = "".join(['http://131.114.52:44444/ztc?netid=', str(netid), \
'&sensid=', str(sensid), '&start=-5s&end=-1s'])

http_client = AsyncHTTPClient()
response = yield tornado.gen.Task(http_client.fetch, como_url)

if response.error:
raise Exception(response.error)

当出现 response.error 时,我得到标题错误...我必须 yield 才能在另一个函数中捕获返回值?

之后我会做类似的事情:

try:
periodic = tornado.ioloop.PeriodicCallback(check_status_changes(netid, sensid), 5000)
value = periodic.start()
print("Secondo")
print value
except:
print("Quarto")
periodic.stop()
self.finish()
return
else:

我不知道...我只是将返回值与另一个值进行比较...

谢谢。

最佳答案

该函数有一个 gen.engine 装饰器,您不能从其中返回值(与 Tornado 无关,您不能在生成器中返回值)。

如果您试图从该函数中获取一个值 - 前提是您在 IOLoop 上调用它-,该函数应该有一个 callback(可调用)关键字参数:

@tornado.gen.engine
def check_status_changes(netid, sensid, callback=None):
response = yield tornado.gen.Task(do_your_thing)
if response.error:
raise response.error
callback(response.body) # this is how you make the value available to the
# caller; response.body is HTTPResponse specific iirc

现在您可以在其他地方调用此函数:

# somewhere in a gen.engine decorated async method
body = yield tornado.gen.Task(check_status_changes, netid, sensid)

关于Python BadYieldError : yielded unknown object HTTPError ('HTTP 599: Connection closed' , ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com