Процессор Heroku Clock не сохраняет данные в файл CSV - PullRequest
1 голос
/ 27 марта 2019

Я использую Heroku для создания веб-страницы, которая ежедневно извлекает некоторый контент с других страниц, а затем показывает это на странице. Проблема, с которой я столкнулся, заключается в том, что при запуске ежедневного файла Clock.py выполняется процесс очистки, но новый файл CSV вообще не сохраняется. Как вы думаете, в чем причина?

Чтобы предоставить дополнительную информацию, функция скребка открывает веб-страницу, очищает некоторый контент и возвращает кадр данных 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 голосов
/ 27 марта 2019

Непосредственная проблема, вероятно, заключается в том, что каталог data/ не существует.

Но проблема больше заключается в том, что файловая система Heroku эфемерна . Любые изменения, которые вы вносите в него, будут потеряны при перезапуске вашего dyno Это происходит часто и непредсказуемо ( хотя бы раз в день ).

Поскольку вы генерируете свои данные каждые три минуты, риск несколько ограничен, но могут быть случаи, когда этот файл может не существовать, когда он вам нужен.

Вместо того, чтобы хранить ваши данные в файловой системе, я настоятельно рекомендую вам использовать хранилище данных . PostgreSQL прекрасно работает с Heroku. Если вы действительно хотите использовать файл, рассмотрите возможность хранения в стороннем сервисе, таком как Amazon S3 .

...