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

标签 python heroku clock

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

相关文章:

php - 如何从 PHP 向 javascript 方法 Date.setTime() 提供值?

c# - Windows 7左键单击时钟弹出窗口

php - 实时倒计时时钟

python - 为什么我的简单线性模型在数据集 g(X) 上学习阈值函数 f(x) = (x > 0) 但在 X 上表现不佳?

python - 为什么 Gauss-Jacobi 方法的特定 numpy 实现会显着减少迭代次数?

python - kNN - 如何根据计算的距离在训练矩阵中定位最近的邻居

django - 将数据库从本地 django 迁移到 heroku

ssl - 为 heroku 应用程序添加证书

Python:编辑字典键 - 使用 Strip 方法

ruby-on-rails - 回形针 + Heroku + S3 问题