Heroku 时钟进程不将数据存储到 CSV 文件

Heroku clock process not storing data to a CSV file

我正在使用 Heroku 制作一个网页,每天从其他网页上抓取一些内容,然后在网页上显示这些内容。我遇到的问题是,当 运行ning 执行抓取过程的每日 Clock.py 文件时,新的 CSV 文件根本没有存储。您认为这是什么原因?

为了提供更多信息,抓取功能会打开一个网页,抓取一些内容和 returns 一个 pandas 数据框。我现在想要实现的是将此数据框存储到名称为 df_result2.csv 的文件夹 data/ 中。简短的评论:抓取过程完美无缺,因为我可以在每个 运行 之后将数据帧打印到控制台。唯一的问题来自存储此文件。您对我应该更改的内容有什么建议吗?

#clock.py
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
import pandas as pd

from components import scraper

sched = BlockingScheduler()

#Example for a job
@sched.scheduled_job('interval', minutes=3)
def timed_job():
    print('This job is run every 3 minutes.')
    result = scraper()
    pd.DataFrame.to_csv(result, "data/df_result2.csv")
    print(result)

眼前的问题可能是 data/ 目录不存在。

但是 更大的 问题是 Heroku 的文件系统 is ephemeral. Any changes you make to it will be lost whenever your dyno restarts. This happens frequently and unpredictably (at least once per day).

由于您每三分钟生成一次数据,因此风险在一定程度上是有限的,但肯定存在您需要时该文件可能不存在的情况。

我强烈建议您不要将数据存储在文件系统中,而是使用合适的 data store. PostgreSQL works great with Heroku. If you really want to use a file, consider storing it on a third-party service like Amazon S3