gpt4 book ai didi

python - Tornado:我可以在异步 RequestHandler 中调用 self.finish() 后运行代码吗?

转载 作者:太空狗 更新时间:2023-10-29 17:39:05 24 4
gpt4 key购买 nike

我正在使用 Tornado 。我有一堆异步请求处理程序。他们中的大多数人异步地完成工作,然后将工作结果报告给用户。但我有一个处理程序,其工作是简单地告诉用户他们的请求将在未来的某个时间点得到处理。我完成 HTTP 连接,然后做更多的工作。这是一个简单的例子:

class AsyncHandler(tornado.web.RequestHandler):

@tornado.web.asynchronous
def get(self, *args, **kwargs):
# first just tell the user to go away
self.write("Your request is being processed.")
self.finish()

# now do work
...

我的问题是:这是对 Tornado 的合法使用吗? self.finish() 之后的代码能可靠运行吗?我以前从未遇到过问题,但现在我在我的一个开发环境(不是所有开发环境)中看到了它的问题。这里有许多我已经确定的解决方法,但我想确保我没有遗漏 Tornado 中请求生命周期的一些基本内容。调用 self.finish() 后我无法运行代码似乎没有理由,但也许我错了。

谢谢!

最佳答案

是的,你可以。

您必须定义RequestHandleron_finish 方法。这是一个在请求完成并将响应发送给客户端后运行的函数。

RequestHandler.on_finish()

Called after the end of a request.

Override this method to perform cleanup, logging, etc. This method is a counterpart to prepare. on_finish may not produce any output, as it is called after the response has been sent to the client.

关于python - Tornado:我可以在异步 RequestHandler 中调用 self.finish() 后运行代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696291/

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