【发布时间】:2021-11-02 12:20:28
【问题描述】:
我有一个 python 脚本,我想在 heroku 平台上运行它 - 一切看起来都很好并且计划好了 - 但最后我在 heroku 上运行时总是出错(我在 papertrail 日志中看到了这个)
当我在我的机器上本地运行脚本时,它工作正常。
当我想使用 yfinance 模块读取数据时发生错误: (显然在最后一行)
tday = datetime.today()
startDay = tday - timedelta(days=2200)
print(f"Read stock price data for {stock}...")
hist_price_stock = yf.download(stock,start=startDay,end=tday)
这是我从 heroku / papertrail 得到的错误消息: (乍一看它对我没有多大帮助)
Sep 04 03:13:12 scoresupdatetickers app/worker.1 Read stock price data for AAPL...
Sep 04 03:13:12 scoresupdatetickers app/worker.1 Exception in thread Thread-1:
Sep 04 03:13:12 scoresupdatetickers app/worker.1 Traceback (most recent call last):
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/threading.py", line 954, in _bootstrap_inner
Sep 04 03:13:12 scoresupdatetickers app/worker.1 self.run()
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/threading.py", line 892, in run
Sep 04 03:13:12 scoresupdatetickers app/worker.1 self._target(*self._args, **self._kwargs)
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/site-packages/multitasking/__init__.py", line 102, in _run_via_pool
Sep 04 03:13:12 scoresupdatetickers app/worker.1 return callee(*args, **kwargs)
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/site-packages/yfinance/multi.py", line 167, in _download_one_threaded
Sep 04 03:13:12 scoresupdatetickers app/worker.1 data = _download_one(ticker, start, end, auto_adjust, back_adjust,
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/site-packages/yfinance/multi.py", line 179, in _download_one
Sep 04 03:13:12 scoresupdatetickers app/worker.1 return Ticker(ticker).history(period=period, interval=interval,
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/site-packages/yfinance/base.py", line 157, in history
Sep 04 03:13:12 scoresupdatetickers app/worker.1 data = data.json()
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/site-packages/requests/models.py", line 900, in json
Sep 04 03:13:12 scoresupdatetickers app/worker.1 return complexjson.loads(self.text, **kwargs)
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/json/__init__.py", line 346, in loads
Sep 04 03:13:12 scoresupdatetickers app/worker.1 return _default_decoder.decode(s)
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/json/decoder.py", line 337, in decode
Sep 04 03:13:12 scoresupdatetickers app/worker.1 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Sep 04 03:13:12 scoresupdatetickers app/worker.1 File "/app/.heroku/python/lib/python3.9/json/decoder.py", line 355, in raw_decode
Sep 04 03:13:12 scoresupdatetickers app/worker.1 raise JSONDecodeError("Expecting value", s, err.value) from None
Sep 04 03:13:12 scoresupdatetickers app/worker.1 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Sep 04 07:09:47 scoresupdatetickers heroku/scheduler.7291 Cycling
Sep 04 07:09:47 scoresupdatetickers heroku/scheduler.7291 State changed from up to complete
Sep 04 07:09:48 scoresupdatetickers heroku/scheduler.7291 Stopping all processes with SIGTERM
Sep 04 07:09:48 scoresupdatetickers heroku/scheduler.7291 Process exited with status 143
知道为什么它只在本地运行而不是在 Heroku 上运行吗?
【问题讨论】:
-
JSON 错误 -
json.decoder.JSONDecodeError -
任何想法可能是什么问题 - 正如我在本地运行时所写的那样,我完全没有问题 - 只有在尝试在 heroku 上运行时
-
看来我发现了问题 - 根据 yfinance:你是对的。根据日志,您的 Heroku 应用程序可能正在使用旧版本的 yfinance - 至少 0.1.59 或更早版本(基于您的日志中 multi.py 的第 95 行实际上现在在第 97 行找到的事实)任何如果可以在他们的平台上升级 yfinance 版本,我该如何与 heroku 取得联系?
-
yfinance 是一个 python 包。您必须将其版本更新为
requirements.txt文件中的最新版本,然后 Heroku 将安装最新版本的 yfinance。 -
是的,你是绝对正确的 - 它可以工作 - 当你写这个答案时,如果你愿意,我会将其标记为答案