我正在使用 Heroku 制作一个网页,每天从其他页面抓取一些内容,然后将其显示在页面上。我遇到的问题是,当运行日常 Clock.py
文件时,会执行抓取过程,但根本不存储新的 CSV 文件。您认为造成这种情况的原因是什么?
为了提供更多信息,抓取功能会打开一个网页,抓取一些内容并返回一个 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 。每当您的测功机重新启动时,您对其所做的任何更改都将丢失。这种情况经常发生且不可预测 ( at least once per day )。
由于您每三分钟生成一次数据,因此风险在一定程度上是有限的,但有时当您需要该文件时,该文件可能不存在。
我强烈建议您使用正确的data store,而不是将数据存储在文件系统上。 。 PostgreSQL 与 Heroku 配合得很好。如果您确实想使用文件,请考虑 storing it on a third-party service like Amazon S3 .
关于python - Heroku 时钟进程不将数据存储到 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367324/