gpt4 book ai didi

python-3.x - 如何不使用 Tornado 在每次请求时调用初始化

转载 作者:行者123 更新时间:2023-12-04 02:22:25 25 4
gpt4 key购买 nike

我想在启动 Tornado 网络服务器时设置变量,所以我试图覆盖 initialize在我的 RequestHandler类(class)。但显然,initialize每次发出请求时都会根据以下代码及其输出启动:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import tornado.web

class MainHandler(tornado.web.RequestHandler):
def initialize(self):
print("Launching initialization...")

def get(self):
print("Get: {}{}".format(self.request.host, self.request.uri))

app = tornado.web.Application([=
(r"/.*", MainHandler)
])

def runserver():
import tornado.ioloop

app.listen(8080)
tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
runserver()

标准输出:
~ ➤ ./redirector.py
Launching initialization...
Get: 127.0.0.1:8080/
Launching initialization...
Get: 127.0.0.1:8080/favicon.ico
Launching initialization...
Get: 127.0.0.1:8080/favicon.ico
Launching initialization...
Get: 127.0.0.1:8080/

这种行为与 doc 中所写的完全相反。 :

Hook for subclass initialization.



(意味着它在 __init__ 的末尾被调用)

那么,有人知道如何做我想做的吗?

提前致谢。

最佳答案

这与文档并不矛盾;看看 Structure of a Tornado app部分。一个 RequestHandler为每个请求创建对象。

如果您只想在应用程序启动时执行代码,请子类化 Application类和覆盖 __init__ ,或者只是把它放在你的 runserver 函数中。

关于python-3.x - 如何不使用 Tornado 在每次请求时调用初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079172/

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