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

时间:2019-03-26 22:52:29

标签: python heroku clock

我正在使用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)

1 个答案:

答案 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