【问题标题】:Heroku / Python - script stops with errorHeroku / Python - 脚本因错误而停止
【发布时间】: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。
  • 是的,你是绝对正确的 - 它可以工作 - 当你写这个答案时,如果你愿意,我会将其标记为答案

标签: python heroku yfinance


【解决方案1】:

yfinance 是一个 python 包。

您必须将其版本更新为 requirements.txt 文件中的最新版本,然后将这些更改推送到 Heroku。

Heroku 将安装更新版本,然后您的应用将使用最新版本的 yfinance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多