Python(WSGI):获取每个请求的峰值内存使用率
我正在为我的Python应用程序使用WSGI守护进程,在尝试使用Python(WSGI):获取每个请求的峰值内存使用率,python,memory,thread-safety,mod-wsgi,wsgi,Python,Memory,Thread Safety,Mod Wsgi,Wsgi,我正在为我的Python应用程序使用WSGI守护进程,在尝试使用资源模块获取每个请求的内存使用情况时遇到问题 如果使用CGI,它将按我所希望的那样工作,但是使用WSGI,内存使用计数将在请求之间共享。我相信这与线程有关,因为WSGI生成进程&线程与使用CGI时不同,CGI只是为每个请求生成一个新进程 下面是一个WSGI Python应用程序的最小示例,可以获得example.com/a和example.com/b的最高内存使用率: def application(environ, start_r
资源模块获取每个请求的内存使用情况时遇到问题
如果使用CGI,它将按我所希望的那样工作,但是使用WSGI,内存使用计数将在请求之间共享。我相信这与线程有关,因为WSGI生成进程&线程与使用CGI时不同,CGI只是为每个请求生成一个新进程
下面是一个WSGI Python应用程序的最小示例,可以获得example.com/a
和example.com/b
的最高内存使用率:
def application(environ, start_response):
if environ['REQUEST_URI'] == '/a':
pass
elif environ['REQUEST_URI'] == '/b':
# Use lots of memory
x = ''
for _i in range(0, 30000):
x += ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
# Show peak memory used
# https://stackoverflow.com/questions/938733/total-memory-used-by-python-process#answer-7669482
import resource
mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
content = str(mem)
status = '200 OK'
header = [('Content-type', 'text/html; charset=utf-8')]
start_response(status, header)
content = content.encode('utf-8')
return [content]
如果我访问example.com/a
,内存使用情况将显示~30008
如果我访问example.com/b
内存使用情况将显示~47984
但是如果我再次访问example.com/a
(在访问example.com/b
之后),它将显示~47984
,而不是~3008
我希望对上述代码执行的操作是:
example.com/a
始终显示~30008
example.com/b
始终显示~47984
非常感谢您的帮助。您需要的不是内存管理的工作方式。Tou不应该期望工作进程的内存使用率下降。我不是想说“期望”,我不确定WSGI是如何工作的,我是想说“我希望发生什么”。我知道你的意思,这不会发生。