我正在运行一个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用作html.Audio
的src
。特别是,我在本地audios/
中有audios/
文件,callback
支持悬停并触发音频回放。
python app.py
在本地运行时没有问题,但在部署的应用程序上没有问题--悬停只触发部分音频。在屏幕截图中,数据点与悬停的信息Piano
正确地播放音频,但我们可以看到ERR_CONNECTION_REFUSED
的其他'localhost:8000/audios/%s.wav' % clicked_index
在右下角不播放音频。这不是在本地发生的。
当我用heroku run bash --app myapp
检查这些文件时,所有的wav文件都在audios/
中。
如果我在本地运行python -m http.server 8000
,那么部署的应用程序运行就没有问题;没有缺少音频播放。
我很感谢任何人在这个问题上启发我,我刚刚开始。
发布于 2019-04-27 00:36:22
根据https://devcenter.heroku.com/articles/s3,Heroku似乎无法承载静态文件,s3公共桶满足了我的需要。
https://stackoverflow.com/questions/55877002
复制