烧瓶散景服务器:退出时释放内存



我在一个目录中有很多散景服务器文件,比如../dir/bokeh/,假设散景服务器被称为 bokeh1.py、bokeh2.py bokeh3.py

文件结构如下所示:

|--dir
|---flask.py
|---bokeh
|--bokeh1.py
|--bokeh2.py

我将它们全部部署在烧瓶上,如下所示:

files=[]
for file in os.listdir("/dir/bokeh/"):
if file.endswith('.py'):
file="bokeh/"+file
files.append(file)
argvs = {}
urls = []
for i in files:
argvs[i] = None
urls.append(i.split('\')[-1].split('.')[0])
host = 'myhost.com'
apps = build_single_handler_applications(files, argvs)
bokeh_tornado = BokehTornado(apps, extra_websocket_origins=["myhost.com"])
bokeh_http = HTTPServer(bokeh_tornado)
sockets, port = bind_sockets("myhost.com", 0)
bokeh_http.add_sockets(sockets)

然后对于每个散景服务器,我有 flask.py:

@app.route("/bokeh1")
def bokeh1():
bokeh_script = server_document("http://11.111.11.111:%d/bokeh1" % port) 
return render_template("bokserv.html", bokeh_script=bokeh_script)

一切正常。但是,我注意到关闭散景服务器浏览器窗口后,关联的内存没有释放。因此,我需要定期重新启动网络服务器以补充内存。

我尝试使用gc.collect()ala

@app.route("/bokeh1")
def bokeh1():
bokeh_script = server_document("http://11.111.11.111:%d/bokeh1" % port) 
return render_template("bokserv.html", bokeh_script=bokeh_script)
gc.collect()

然而,这似乎并不能解决问题... 如何在标签/窗口关闭时使用烧瓶/散景来释放内存?

随机崩溃后,我发现这是一个枪形解决方案。 使用thread参数运行应用程序将在关闭烧瓶中的页面/选项卡时将内存释放回 Linux

gunicorn -w 2 -t 3 app:app

最新更新