0
#packages.
greenlet==0.4.11
Flask==0.11.1
#centos, /etc/security/limit.conf
* soft nofile 65535
* hard nofile 65535
这是我的测试代码(python 3.5)我跑了这个并观察了内存使用情况。python flask + gevent不释放内存。 limit.conf
首先,它具有3个线程的30MB内存。 但在此服务器上发送批量“/ do”请求后, 内存将增加至60MB,并有12个线程。尽管发送和每个请求都已完成。这个内存使用情况没有改变。
from gevent import monkey;monkey.patch_all(thread=False)
import gevent
from flask import Flask, request
from gevent.pywsgi import WSGIServer
import requests
app = Flask(__name__)
@app.route("/do", methods=['GET', 'POST'])
def ping():
data = request.get_json()
gevent.spawn(send_request, data)
return 'pong'
def send_request(data):
resp = requests.get("http://127.0.0.1:25000/ping", data=data)
if resp.text != 'pong':
app.logger.error(resp.text)
if __name__ == "__main__":
http = WSGIServer(("0.0.0.0", 9999), app)
http.serve_forever()
end_server = True
app.logger.info("Server will be closed")
我觉得这个python使用了所有可用的65535个文件数。 如何限制python使用少于我在limit.conf文件中配置的文件数量?