如何使用 python 从 git 下载 html 文件?
How to download a html file from git using python?
我正在尝试在 Heroku 上部署 Dash 应用程序。在本地系统上,该应用程序 运行 完美无缺。对于应用程序,我需要导入多个具有不同扩展名的数据文件 - '.csv' / '.txt' / '.html'.
为了在 Heroku 上部署,我创建了一个 Git 存储库并从那里获取文件。我正在使用来自 Git 的 'Raw' 数据路径为每个文件导入它们。
我检查了初始日志并修复了 'requirements.txt' 文件中的所有包相关问题
但我仍然无法启动该应用程序。即使部署成功。
这是我的错误日志 -
2020-04-03T17:20:46.813383+00:00 app[web.1]: self.reap_workers()
2020-04-03T17:20:46.813419+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2020-04-03T17:20:46.813868+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2020-04-03T17:20:46.813892+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2020-04-03T17:20:46.913389+00:00 heroku[web.1]: State changed from up to crashed
2020-04-03T17:20:50.000000+00:00 app[api]: Build succeeded
2020-04-03T17:21:02.166696+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=covid19-extractor.herokuapp.com request_id=6df7e7c2-1bcc-4390-8873-11f001c2bbf9 fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:02.865422+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=covid19-extractor.herokuapp.com request_id=bf774cd5-fb5f-4627-ab11-137f756ee48f fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:09.553299+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=covid19-extractor.herokuapp.com request_id=0b7a178d-b477-4caa-bf93-4619f5c9da09 fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:10.223515+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=covid19-extractor.herokuapp.com request_id=235901a2-1ac8-4c02-8e14-2030583dd7fd fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:28:20.503577+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-03T17:28:32.032154+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Starting gunicorn 20.0.4
2020-04-03T17:28:32.033060+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Listening at: http://0.0.0.0:6703 (4)
2020-04-03T17:28:32.033240+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Using worker: sync
2020-04-03T17:28:32.038216+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [10] [INFO] Booting worker with pid: 10
2020-04-03T17:28:32.077247+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [11] [INFO] Booting worker with pid: 11
2020-04-03T17:28:32.764140+00:00 heroku[web.1]: State changed from starting to up
2020-04-03T17:28:33.447784+00:00 app[web.1]: Layout complete..
2020-04-03T17:28:33.481467+00:00 app[web.1]: Layout complete..
2020-04-03T17:28:33.708697+00:00 app[web.1]: Data load complete..
2020-04-03T17:28:33.712337+00:00 app[web.1]: Data load complete..
2020-04-03T17:28:33.741698+00:00 app[web.1]: Creating Layout..
2020-04-03T17:28:33.765243+00:00 app[web.1]: Creating Layout..
2020-04-03T17:28:34.942880+00:00 app[web.1]: [2020-04-03 17:28:34 +0000] [10] [ERROR] Exception in worker process
2020-04-03T17:28:34.942929+00:00 app[web.1]: Traceback (most recent call last):
2020-04-03T17:28:34.942931+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-04-03T17:28:34.942932+00:00 app[web.1]: worker.init_process()
2020-04-03T17:28:34.942932+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-04-03T17:28:34.942932+00:00 app[web.1]: self.load_wsgi()
2020-04-03T17:28:34.942933+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-04-03T17:28:34.942933+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-04-03T17:28:34.942934+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-04-03T17:28:34.942934+00:00 app[web.1]: self.callable = self.load()
2020-04-03T17:28:34.942935+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-04-03T17:28:34.942935+00:00 app[web.1]: return self.load_wsgiapp()
2020-04-03T17:28:34.942935+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-04-03T17:28:34.942936+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-04-03T17:28:34.942936+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-04-03T17:28:34.942937+00:00 app[web.1]: mod = importlib.import_module(module)
2020-04-03T17:28:34.942937+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-04-03T17:28:34.942938+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-04-03T17:28:34.942938+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-04-03T17:28:34.942939+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-04-03T17:28:34.942939+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-04-03T17:28:34.942941+00:00 app[web.1]: File "/app/app.py", line 436, in <module>
2020-04-03T17:28:34.942941+00:00 app[web.1]: [Input('dd','value')]
2020-04-03T17:28:34.942942+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 1319, in callback
2020-04-03T17:28:34.942942+00:00 app[web.1]: self._validate_callback(output, inputs, state)
2020-04-03T17:28:34.942942+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 875, in _validate_callback
2020-04-03T17:28:34.942943+00:00 app[web.1]: layout = self._cached_layout or self._layout_value()
2020-04-03T17:28:34.942943+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 442, in _layout_value
2020-04-03T17:28:34.942944+00:00 app[web.1]: self._cached_layout = self._layout()
2020-04-03T17:28:34.942944+00:00 app[web.1]: File "/app/app.py", line 255, in serve_layout
2020-04-03T17:28:34.942947+00:00 app[web.1]: children = [html.Iframe(srcDoc = open(str(data_path) + 'TotalCases.html').read(), width = '100%', height = '400')]
2020-04-03T17:28:34.942955+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: 'https://raw.githubusercontent.com/pratik-bose/CoronaTracker/V1/TotalCases.html'
2020-04-03T17:28:34.943015+00:00 app[web.1]: [2020-04-03 17:28:34 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-04-03T17:28:35.028451+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [11] [ERROR] Exception in worker process
2020-04-03T17:28:35.028454+00:00 app[web.1]: Traceback (most recent call last):
2020-04-03T17:28:35.028455+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-04-03T17:28:35.028456+00:00 app[web.1]: worker.init_process()
2020-04-03T17:28:35.028456+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-04-03T17:28:35.028460+00:00 app[web.1]: self.load_wsgi()
2020-04-03T17:28:35.028460+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-04-03T17:28:35.028461+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-04-03T17:28:35.028461+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-04-03T17:28:35.028462+00:00 app[web.1]: self.callable = self.load()
2020-04-03T17:28:35.028462+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-04-03T17:28:35.028463+00:00 app[web.1]: return self.load_wsgiapp()
2020-04-03T17:28:35.028463+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-04-03T17:28:35.028463+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-04-03T17:28:35.028464+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-04-03T17:28:35.028464+00:00 app[web.1]: mod = importlib.import_module(module)
2020-04-03T17:28:35.028465+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-04-03T17:28:35.028465+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-04-03T17:28:35.028466+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-04-03T17:28:35.028466+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-04-03T17:28:35.028468+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-04-03T17:28:35.028468+00:00 app[web.1]: File "/app/app.py", line 436, in <module>
2020-04-03T17:28:35.028468+00:00 app[web.1]: [Input('dd','value')]
2020-04-03T17:28:35.028469+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 1319, in callback
2020-04-03T17:28:35.028469+00:00 app[web.1]: self._validate_callback(output, inputs, state)
2020-04-03T17:28:35.028470+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 875, in _validate_callback
2020-04-03T17:28:35.028470+00:00 app[web.1]: layout = self._cached_layout or self._layout_value()
2020-04-03T17:28:35.028471+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 442, in _layout_value
2020-04-03T17:28:35.028471+00:00 app[web.1]: self._cached_layout = self._layout()
2020-04-03T17:28:35.028471+00:00 app[web.1]: File "/app/app.py", line 255, in serve_layout
2020-04-03T17:28:35.028472+00:00 app[web.1]: children = [html.Iframe(srcDoc = open(str(data_path) + 'TotalCases.html').read(), width = '100%', height = '400')]
2020-04-03T17:28:35.028480+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: 'https://raw.githubusercontent.com/pratik-bose/CoronaTracker/V1/TotalCases.html'
2020-04-03T17:28:35.028674+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-04-03T17:28:35.335859+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [4] [INFO] Shutting down: Master
2020-04-03T17:28:35.335982+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-04-03T17:28:35.419048+00:00 heroku[web.1]: State changed from up to crashed
似乎找不到 'xxx/TotalCases.html' 文件。但它在 git 仓库中。在此步骤之前,还导入了多个 .csv
文件。他们似乎使用相同的路径工作正常。
#
我想我已经缩小了问题范围。暂时感觉不是Heroku的问题,所以标题误导了,已经更新了。当前的问题是 - 使用原始路径从 git 下载文件不适用于 'HTML' 文件。下载文件的后端代码而不是文件本身。
如何从 Git Repo 下载 html 文件?
提前感谢您的帮助。
我找到了解决整个问题的方法,而不是针对这个特定问题的方法。我正在做的是 - 生成一个 folium 地图并将其保存在文件夹中 html。当我运行 dash app时,需要从特定文件夹中选择地图。
现在,在我移动到 git 后,由于上述问题,我无法获取 html 文件。所以解决方案是动态生成地图,我就是这样做的 -
m = folium.map()
#instead of m.save(), this is what I do.
m = m._repr_html_()
#in dash app then I call it through a html.Iframe
html.Iframe(srcDoc = m)
我正在尝试在 Heroku 上部署 Dash 应用程序。在本地系统上,该应用程序 运行 完美无缺。对于应用程序,我需要导入多个具有不同扩展名的数据文件 - '.csv' / '.txt' / '.html'.
为了在 Heroku 上部署,我创建了一个 Git 存储库并从那里获取文件。我正在使用来自 Git 的 'Raw' 数据路径为每个文件导入它们。
我检查了初始日志并修复了 'requirements.txt' 文件中的所有包相关问题
但我仍然无法启动该应用程序。即使部署成功。 这是我的错误日志 -
2020-04-03T17:20:46.813383+00:00 app[web.1]: self.reap_workers()
2020-04-03T17:20:46.813419+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2020-04-03T17:20:46.813868+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2020-04-03T17:20:46.813892+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2020-04-03T17:20:46.913389+00:00 heroku[web.1]: State changed from up to crashed
2020-04-03T17:20:50.000000+00:00 app[api]: Build succeeded
2020-04-03T17:21:02.166696+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=covid19-extractor.herokuapp.com request_id=6df7e7c2-1bcc-4390-8873-11f001c2bbf9 fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:02.865422+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=covid19-extractor.herokuapp.com request_id=bf774cd5-fb5f-4627-ab11-137f756ee48f fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:09.553299+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=covid19-extractor.herokuapp.com request_id=0b7a178d-b477-4caa-bf93-4619f5c9da09 fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:21:10.223515+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=covid19-extractor.herokuapp.com request_id=235901a2-1ac8-4c02-8e14-2030583dd7fd fwd="106.51.31.180" dyno= connect= service= status=503 bytes= protocol=https
2020-04-03T17:28:20.503577+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-03T17:28:32.032154+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Starting gunicorn 20.0.4
2020-04-03T17:28:32.033060+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Listening at: http://0.0.0.0:6703 (4)
2020-04-03T17:28:32.033240+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [4] [INFO] Using worker: sync
2020-04-03T17:28:32.038216+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [10] [INFO] Booting worker with pid: 10
2020-04-03T17:28:32.077247+00:00 app[web.1]: [2020-04-03 17:28:32 +0000] [11] [INFO] Booting worker with pid: 11
2020-04-03T17:28:32.764140+00:00 heroku[web.1]: State changed from starting to up
2020-04-03T17:28:33.447784+00:00 app[web.1]: Layout complete..
2020-04-03T17:28:33.481467+00:00 app[web.1]: Layout complete..
2020-04-03T17:28:33.708697+00:00 app[web.1]: Data load complete..
2020-04-03T17:28:33.712337+00:00 app[web.1]: Data load complete..
2020-04-03T17:28:33.741698+00:00 app[web.1]: Creating Layout..
2020-04-03T17:28:33.765243+00:00 app[web.1]: Creating Layout..
2020-04-03T17:28:34.942880+00:00 app[web.1]: [2020-04-03 17:28:34 +0000] [10] [ERROR] Exception in worker process
2020-04-03T17:28:34.942929+00:00 app[web.1]: Traceback (most recent call last):
2020-04-03T17:28:34.942931+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-04-03T17:28:34.942932+00:00 app[web.1]: worker.init_process()
2020-04-03T17:28:34.942932+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-04-03T17:28:34.942932+00:00 app[web.1]: self.load_wsgi()
2020-04-03T17:28:34.942933+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-04-03T17:28:34.942933+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-04-03T17:28:34.942934+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-04-03T17:28:34.942934+00:00 app[web.1]: self.callable = self.load()
2020-04-03T17:28:34.942935+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-04-03T17:28:34.942935+00:00 app[web.1]: return self.load_wsgiapp()
2020-04-03T17:28:34.942935+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-04-03T17:28:34.942936+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-04-03T17:28:34.942936+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-04-03T17:28:34.942937+00:00 app[web.1]: mod = importlib.import_module(module)
2020-04-03T17:28:34.942937+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-04-03T17:28:34.942938+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-04-03T17:28:34.942938+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-04-03T17:28:34.942939+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-04-03T17:28:34.942939+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-04-03T17:28:34.942940+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-04-03T17:28:34.942941+00:00 app[web.1]: File "/app/app.py", line 436, in <module>
2020-04-03T17:28:34.942941+00:00 app[web.1]: [Input('dd','value')]
2020-04-03T17:28:34.942942+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 1319, in callback
2020-04-03T17:28:34.942942+00:00 app[web.1]: self._validate_callback(output, inputs, state)
2020-04-03T17:28:34.942942+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 875, in _validate_callback
2020-04-03T17:28:34.942943+00:00 app[web.1]: layout = self._cached_layout or self._layout_value()
2020-04-03T17:28:34.942943+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 442, in _layout_value
2020-04-03T17:28:34.942944+00:00 app[web.1]: self._cached_layout = self._layout()
2020-04-03T17:28:34.942944+00:00 app[web.1]: File "/app/app.py", line 255, in serve_layout
2020-04-03T17:28:34.942947+00:00 app[web.1]: children = [html.Iframe(srcDoc = open(str(data_path) + 'TotalCases.html').read(), width = '100%', height = '400')]
2020-04-03T17:28:34.942955+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: 'https://raw.githubusercontent.com/pratik-bose/CoronaTracker/V1/TotalCases.html'
2020-04-03T17:28:34.943015+00:00 app[web.1]: [2020-04-03 17:28:34 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-04-03T17:28:35.028451+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [11] [ERROR] Exception in worker process
2020-04-03T17:28:35.028454+00:00 app[web.1]: Traceback (most recent call last):
2020-04-03T17:28:35.028455+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-04-03T17:28:35.028456+00:00 app[web.1]: worker.init_process()
2020-04-03T17:28:35.028456+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-04-03T17:28:35.028460+00:00 app[web.1]: self.load_wsgi()
2020-04-03T17:28:35.028460+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-04-03T17:28:35.028461+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-04-03T17:28:35.028461+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-04-03T17:28:35.028462+00:00 app[web.1]: self.callable = self.load()
2020-04-03T17:28:35.028462+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-04-03T17:28:35.028463+00:00 app[web.1]: return self.load_wsgiapp()
2020-04-03T17:28:35.028463+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-04-03T17:28:35.028463+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-04-03T17:28:35.028464+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
2020-04-03T17:28:35.028464+00:00 app[web.1]: mod = importlib.import_module(module)
2020-04-03T17:28:35.028465+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2020-04-03T17:28:35.028465+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-04-03T17:28:35.028466+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2020-04-03T17:28:35.028466+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2020-04-03T17:28:35.028467+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2020-04-03T17:28:35.028468+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-04-03T17:28:35.028468+00:00 app[web.1]: File "/app/app.py", line 436, in <module>
2020-04-03T17:28:35.028468+00:00 app[web.1]: [Input('dd','value')]
2020-04-03T17:28:35.028469+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 1319, in callback
2020-04-03T17:28:35.028469+00:00 app[web.1]: self._validate_callback(output, inputs, state)
2020-04-03T17:28:35.028470+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 875, in _validate_callback
2020-04-03T17:28:35.028470+00:00 app[web.1]: layout = self._cached_layout or self._layout_value()
2020-04-03T17:28:35.028471+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/dash/dash.py", line 442, in _layout_value
2020-04-03T17:28:35.028471+00:00 app[web.1]: self._cached_layout = self._layout()
2020-04-03T17:28:35.028471+00:00 app[web.1]: File "/app/app.py", line 255, in serve_layout
2020-04-03T17:28:35.028472+00:00 app[web.1]: children = [html.Iframe(srcDoc = open(str(data_path) + 'TotalCases.html').read(), width = '100%', height = '400')]
2020-04-03T17:28:35.028480+00:00 app[web.1]: FileNotFoundError: [Errno 2] No such file or directory: 'https://raw.githubusercontent.com/pratik-bose/CoronaTracker/V1/TotalCases.html'
2020-04-03T17:28:35.028674+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [11] [INFO] Worker exiting (pid: 11)
2020-04-03T17:28:35.335859+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [4] [INFO] Shutting down: Master
2020-04-03T17:28:35.335982+00:00 app[web.1]: [2020-04-03 17:28:35 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-04-03T17:28:35.419048+00:00 heroku[web.1]: State changed from up to crashed
似乎找不到 'xxx/TotalCases.html' 文件。但它在 git 仓库中。在此步骤之前,还导入了多个 .csv
文件。他们似乎使用相同的路径工作正常。
我想我已经缩小了问题范围。暂时感觉不是Heroku的问题,所以标题误导了,已经更新了。当前的问题是 - 使用原始路径从 git 下载文件不适用于 'HTML' 文件。下载文件的后端代码而不是文件本身。
如何从 Git Repo 下载 html 文件?
提前感谢您的帮助。
我找到了解决整个问题的方法,而不是针对这个特定问题的方法。我正在做的是 - 生成一个 folium 地图并将其保存在文件夹中 html。当我运行 dash app时,需要从特定文件夹中选择地图。
现在,在我移动到 git 后,由于上述问题,我无法获取 html 文件。所以解决方案是动态生成地图,我就是这样做的 -
m = folium.map()
#instead of m.save(), this is what I do.
m = m._repr_html_()
#in dash app then I call it through a html.Iframe
html.Iframe(srcDoc = m)