Python Web应用程序启动多次-Web.py
我有这样一段代码,它在服务器启动时加载必要的文件并打印必要的信息,但在Python Web应用程序启动多次-Web.py,python,python-2.7,web.py,Python,Python 2.7,Web.py,我有这样一段代码,它在服务器启动时加载必要的文件并打印必要的信息,但在中,如果uuu name_uuu==“uuu main_uuu”:我也在启动后台进程,然后最后执行app.run() 我的问题是,在加载完所有内容后,后台进程开始打印并重新加载所有内容。当服务器收到第一个请求(get/POST)时,它也会执行相同的操作。我怎样才能使它只加载一次 import web from multiprocessing import Process import scripts print 'Engine
中,如果uuu name_uuu==“uuu main_uuu”:
我也在启动后台进程,然后最后执行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请求后,将加载三次(“引擎启动”打印三次)
我通过了,但它解决了flask中的问题,我使用了web.py,我不知道这为什么会让您感到惊讶,或者为什么会成为一个问题。根据定义,后台进程是与web进程分开的进程;每一个都将导入代码,并因此打印该消息。如果您不想看到该消息,请将其放入
If\uuu name\uuuu
块中。print'Engine Started'
不在If\uuuu name\uuuu==“\uuu main\uuuu”:
@PadraicCunningham所以您是说我应该将所有加载代码和打印放在If\uu name\uuu main\uuuuuu>块中:
?只有当从文件导入任何内容时,如果uuu name uuu==“\uuuu main”将不会执行中的内容。这是使用它的要点,只有当您实际执行文件时,if中的任何内容才会运行。好的,谢谢,我的问题在我将代码移动到上述位置后得到了解决。但是,为什么在运行一个进程或者第一个请求出现时,它会遍历整个代码呢。不适用于第二次和以后的请求?因为在第一次请求之后,进程已经运行,并且代码已经导入。