gpt4 book ai didi

python - 如何在多进程上从 python 中的 simple_server 运行 make_server?

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:12 26 4
gpt4 key购买 nike

我有一个简单的wsgi程序。

from wsgiref.simple_server import make_server
import time

def application(environ, start_response):
response_body = 'Hello World'
status = '200 OK'

response_headers = [('Content-Type', 'text/plain'),
('Content-Length', str(len(response_body)))]

start_response(status, response_headers)

if environ['PATH_INFO'] != '/favicon.ico':

print "Time :", int(time.time())
if int(time.time()) % 2:
print "Even"
time.sleep(10)
else:
print "Odd"
return [response_body]

httpd = make_server('localhost', 8000, application)
httpd.serve_forever()

根据代码,如果 timestampEven,那么它将在 10 秒后发送响应。但是如果 timestampOdd 那么它会直接发送响应而不休眠。

所以我的问题是,如果我将发送 2 个请求,如果第一个请求将以 Even 模式发送请求,那么我的第二个请求将在完成第一个请求后得到服务。

查看解决方案,发现'multiprocess可以解决这个问题。我使用 multiprocess 设置 apache 配置。然后我在没有完成 Even` 请求的情况下得到了 Odd 的响应。



我检查如何使用 simple_server 模块的 make_server 方法设置 multiprocess。当我运行 python/usr/lib64/python2.7/wsgiref/simple_server.py 时,我得到了输出,最后几行是



wsgi.errors = <open file '<stderr>', mode 'w' at 0x7f22ba2a1270>
wsgi.file_wrapper = <class wsgiref.util.FileWrapper at 0x1647600>
wsgi.input = <socket._fileobject object at 0x1569cd0>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = (1, 0)

所以我正在搜索如何设置此 make_server 多进程,以便 make_server 可以处理超过 1 个请求(如果有任何请求正在进行中)。

提前致谢。

最佳答案

如果您使用的是 Apache/mod_wsgi,则不需要 make_server/serve_forever 东西。 Apache 将为您处理(因为它是 Web 服务器)。它将处理进程并运行 application 回调函数。

确保您的 Apache 和 mod_wsgi 配置允许多进程/多线程。很好的引用资料here

关于python - 如何在多进程上从 python 中的 simple_server 运行 make_server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207878/

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