#python #heroku #clock
#python #heroku #часы
Вопрос:
Я использую 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. Я думаю, что вы ищете result.to_csv («data / df_result2.csv»), поскольку pd.DataFrame.to_csv — это экземпляр, а не статический метод класса pd.DataFrame, насколько я знаю. Какую ошибку вы видите?
2. @DavidWaterworth Спасибо за ваш ответ. Интересно, что сообщения об ошибке вообще нет. Причина может быть в этой условной файловой системе, как объяснил Крис. Следовательно, файл может быть недоступен для других динамических процессоров
Ответ №1:
Непосредственная проблема, вероятно, заключается в том, что data/
каталог не существует.
Но большая проблема заключается в том, что файловая система Heroku эфемерна. Любые изменения, которые вы вносите в него, будут потеряны при каждом перезапуске вашего dyno. Это происходит часто и непредсказуемо (по крайней мере, один раз в день).
Поскольку вы генерируете свои данные каждые три минуты, риск несколько ограничен, но определенно могут быть случаи, когда этот файл может не существовать, когда он вам нужен.
Вместо хранения ваших данных в файловой системе я настоятельно рекомендую вам использовать надлежащее хранилище данных. PostgreSQL отлично работает с Heroku. Если вы действительно хотите использовать файл, рассмотрите возможность сохранения его в стороннем сервисе, таком как Amazon S3.