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文件中配置的文件數量?