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

问题描述 投票:1回答:1

我正在使用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)
python heroku clock
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.