【问题标题】:Flask-Bokeh Servers: Release memory on exitFlask-Bokeh 服务器:退出时释放内存
【发布时间】:2018-10-22 02:19:02
【问题描述】:

我在一个目录中有许多 Bokeh Server 文件,例如.. /dir/bokeh/,假设 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()

但这似乎并没有解决问题...... 当标签页/窗口关闭时,如何使用 Flask/Bokeh 释放内存?

【问题讨论】:

  • gc.collect() 不会被调用,因为您将它放在return 语句之后。
  • 我只是尝试将它放在return 之前,大约10 次刷新后,它产生MemoryError
  • 您可以将一些日志记录选项传递给BokehTornado 以启用更详细的内存日志记录:bokeh.pydata.org/en/latest/docs/reference/server/tornado.html 如果您启用这些选项,您会看到有关未收集的会话或模型的消息吗?
  • BokehTornado 内,我通过了mem_log_frequency_milliseconds=5000。不过,ubuntu 终端中没有日志,只有我通常会看到的消息,即 ColumnDataSource's columns must be same length 和我的脚本 print 语句

标签: python-3.x ubuntu memory-management flask gunicorn


【解决方案1】:

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

gunicorn -w 2 -t 3 app:app

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 2018-10-19
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多