python bokeh 2.0.0不渲染

python bokeh 2.0.0不渲染,python,bokeh,tornado,gunicorn,Python,Bokeh,Tornado,Gunicorn,我最近将bokeh从1.4升级到了2.0.0。我有一个flask应用程序和几个bokeh服务器。更新后,bokeh服务器不再正确渲染(无打印、空白),浏览器控制台或redhat shell中没有错误。如果我恢复到bokeh 1.4+tornado 4.5.3,它将正常渲染。有人能帮我弄清楚发生了什么事吗 Python 3.6.3 博克2.0.0 龙卷风6.0.4 红帽4.8.5 编辑:对每个bokeh服务器分别执行bokeh服务myapp.py,这一定是我通过flask部署它们的方式。下面的代码

我最近将bokeh从1.4升级到了2.0.0。我有一个flask应用程序和几个bokeh服务器。更新后,bokeh服务器不再正确渲染(无打印、空白),浏览器控制台或redhat shell中没有错误。如果我恢复到bokeh 1.4+tornado 4.5.3,它将正常渲染。有人能帮我弄清楚发生了什么事吗

Python 3.6.3 博克2.0.0 龙卷风6.0.4 红帽4.8.5

编辑:对每个bokeh服务器分别执行
bokeh服务myapp.py
,这一定是我通过flask部署它们的方式。下面的代码适用于bokeh1.4+tornado 4.5.3

# cycle through bokeh files and start bokeh servers
files = []
boks = []
for file in os.listdir("/mypath_to_bokeh/bokehs/"):
    if file.endswith('.py'):
        boks.append(file)
        file = "bokehs/" + file
        files.append(file)
boks = [os.path.splitext(x)[0] for x in boks]

argvs = {}
urls = []
for i in files:
    argvs[i] = None
    urls.append(i.split('\\')[-1].split('.')[0])
host = 'myhost'

apps = build_single_handler_applications(files, argvs)

bokeh_tornado = BokehTornado(apps, extra_websocket_origins=["hoststring"]) 
bokeh_http = HTTPServer(bokeh_tornado)                    
sockets, port = bind_sockets("ipstring", 0) 
bokeh_http.add_sockets(sockets)

def serve(name):
    @app.route("/{}".format(name), endpoint=str(name))
    #@login_required
    #@bokeh_access
    def func():
        bokeh_script = server_document("ipstring:%d/%s" % (port, name)) 
        gc.collect()
        return render_template("bokserv.html", bokeh_script=bokeh_script)

    func.__name__ = name
    gc.collect()
    return func

all_serve_functions = [serve(name) for name in boks]

我无意中从发布的代码中漏掉了一件事,那就是我在申请结束时:

def bk_worker():
    asyncio.set_event_loop(asyncio.new_event_loop())
    bokeh_tornado = BokehTornado(apps, extra_websocket_origins=["localhost:8000"]) 
    bokeh_http = HTTPServer(bokeh_tornado)                     
    sockets, port = bind_sockets("localhost", 0) #PROBLEM LINE
    bokeh_http.add_sockets(sockets)
    server = BaseServer(IOLoop.current(), bokeh_tornado, bokeh_http)
    server.start()
    server.io_loop.start()

t = Thread(target=bk_worker)
t.daemon = True
t.start()
提取出
#问题行
并将其放在
bk_worker()
函数之前,大部分返回了bokeh的功能,现在是时候重构所有不推荐的代码了。

不幸的是,如果没有一个完整的、最小的、可以实际运行和调查的复制程序,就不可能真正进行推测。我所能做的就是将回购协议中的这个工作示例(刚刚验证)作为参考: