#packages.
greenlet==0.4.11
Flask==0.11.1
#centos, /etc/security/limit.conf
* soft nofile 65535
* hard nofile 65535
これは私のテストコード(python 3.5)です。これを実行してメモリ使用量を監視しました。pythonフラスコ+ geventはメモリを解放しません。 limit.conf
まず、30MBのメモリと3つのスレッドで起動しました。 しかし、このサーバーで一括「/ do」リクエストを送信した後、 メモリは12スレッドで60MBに増加します。送信はすべてリクエストされますが。このメモリ使用量は変更されません。
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ファイルカウントを使用すると思います。 limit.confファイルで設定したファイル数より少ないファイル数を使用するようにPythonを制限するにはどうすればよいですか?