【发布时间】:2026-01-06 22:00:02
【问题描述】:
我有这段代码,它在服务器启动时加载必要的文件并打印必要的信息,但在if __name__ == "__main__": 内部,我也在启动后台进程,然后最终执行 app.run()。
我的问题是在加载所有内容后开始后台进程,它开始打印并重新加载所有内容。当服务器收到第一个请求(GET/POST)时,它也会做同样的事情。如何让它只加载一次?
import web
from multiprocessing import Process
import scripts
print 'Engine Started'
# Code to load and print necessary stuff goes here...
urls = (
'/test(.*)', 'Test'
)
class Test():
def GET(self,r):
tt = web.input().t
print tt
return tt
if __name__ == "__main__":
try:
print 'Cache initializing...'
p = Process(target=scripts.initiate_cleaner)
p.start() # Starts the background process
except Exception, err:
print "Error initializing cache"
print err
app = web.application(urls, globals())
app.run()
所以这会在启动进程并从 localhost:8080/test?t=er 请求之后加载三次('Engine Started' 打印三次)
我经历了this,但它解决了烧瓶中的问题,我使用 web.py
【问题讨论】:
-
print 'Engine Started'不在if __name__ == "__main__":内 -
@PadraicCunningham 所以你说我应该把所有的加载代码和打印放在
if __name__ == "__main__":中? -
只有
if __name__ == "__main__"中的内容在从文件中导入任何内容时都不会被执行。这是使用它的要点,只有当你实际执行文件时,if 中的任何内容才会运行。
标签: python python-2.7 web.py