我正在使用Heroku制作一个网页,该网页每天都会从其他页面抓取一些内容,然后在页面上显示该内容。我遇到的问题是,在运行每日Clock.py
文件时,会执行抓取过程,但根本不会存储新的CSV文件。您认为这是什么原因?
要提供更多信息,scraper函数会打开一个网页,刮取一些内容并返回pandas数据框。我现在想要实现的是将该数据帧存储到名为data/
的文件夹df_result2.csv
中。简短说明:抓取过程非常完美,因为我可以在每次运行后将数据帧打印到控制台。唯一的问题来自存储此文件。您有什么建议我应该改变吗?
#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)
答案 0 :(得分:0)
直接的问题可能是data/
目录不存在。
但是更大的问题是Heroku的文件系统is ephemeral。每当您的dyno重新启动时,对它所做的任何更改都将丢失。这种情况经常发生且无法预测(at least once per day)。
由于每三分钟生成一次数据,因此风险受到一定程度的限制,但是在某些情况下,有时您可能不需要该文件。
我强烈建议您使用适当的data store,而不是将数据存储在文件系统上。 PostgreSQL在Heroku上运行良好。如果您确实要使用文件,请考虑使用storing it on a third-party service like Amazon S3。