Heroku:部署应用程序时获取localhost net :: ERR_CONNECTION_REFUSED

时间:2019-04-27 03:28:03

标签: multithreading heroku flask httpserver plotly-dash

我正在运行一个app.py,它有两个线程,一个用于dash应用程序,另一个用于HTTPServer

app = dash.Dash(__name__)
app.layout = html.Div( ... )
@app.callback( ... )
def do_something( ... ): ...

if __name__ == '__main__':
    httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
    t1 = threading.Thread(target=httpd.serve_forever)
    t2 = threading.Thread(target=app.run_server, kwargs={'debug': False})
    t1.start()
    t2.start()

运行HTTPServer的原因是使用URL 'localhost:8000/audios/%s.wav' % clicked_index检索本地文件,并将URL用作src的{​​{1}}。特别是,我在本地html.Audio中有.wav个文件,并且audios/启用了悬停并触发了音频播放。

callback在本地运行时没有问题,但不在已部署的应用程序上运行-悬停仅触发部分音频。在屏幕快照中,带有悬停的信息python app.py的数据点正确播放了音频,但是我们可以在右下角看到Piano的其他ERR_CONNECTION_REFUSED不能播放音频。这不是本地发生的。

当我使用'localhost:8000/audios/%s.wav' % clicked_index检查文件时,所有wav文件都位于heroku run bash --app myapp中。

如果我在本地运行audios/,则已部署的应用程序可以正常运行;没有丢失的音频播放。

我很感激任何刚启迪此主题的人。

enter image description here

1 个答案:

答案 0 :(得分:0)

根据https://devcenter.heroku.com/articles/s3,Heroku似乎无法托管静态文件,而s3公共存储桶可满足我的需求。