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

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


杨魅力
浏览 191回答 1
1回答

GCT1015

直接的问题可能是该data/目录不存在。但更大的问题是 Heroku 的文件系统是 ephemeral 的。每当您的 dyno 重新启动时,您对其所做的任何更改都将丢失。这种情况经常发生且不可预测(至少每天一次)。由于您每三分钟生成一次数据,因此风险在一定程度上是有限的,但有时在您需要时该文件可能不存在。我强烈建议您使用适当的数据存储,而不是将您的数据存储在文件系统上。PostgreSQL 与 Heroku 配合得很好。如果您确实想使用某个文件,请考虑将其存储在 Amazon S3 等第三方服务上。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python