#python #python-3.x #heroku #scrapy #heroku-cli
#python #python-3.x #heroku #scrapy #heroku-cli
Вопрос:
Я запускаю свой scrapy-проект на heroku. Мне нужно автоматизировать некоторую задачу. Итак, из документации я узнал о пользовательских часах с Apsheduler. Это моя структура каталогов:
.
├── bin
│ └── testargs.py
├── clock.py
├── Dockerfile
├── :hrsZp[do
├── newsfetch
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── __pycache__
│ │ ├── __init__.cpython-34.pyc
│ │ ├── middlewares.cpython-34.pyc
│ │ ├── pipelines.cpython-34.pyc
│ │ └── settings.cpython-34.pyc
│ ├── settings.py
│ └── spiders
│ ├── indiatv.py
│ ├── __init__.py
│ ├── ndtv.py
│ ├── __pycache__
│ │ ├── indiatv.cpython-34.pyc
│ │ ├── __init__.cpython-34.pyc
│ │ ├── ndtv.cpython-34.pyc
│ │ ├── republic.cpython-34.pyc
│ │ ├── thehindu.cpython-34.pyc
│ │ └── zee.cpython-34.pyc
│ ├── republic.py
│ ├── thehindu.py
│ └── zee.py
├── p1.py
├── Procfile
├── requirements.txt
├── scrapy.cfg
└── setup.py
5 directories, 30 files
Это мой файл требований
Scrapy>=1.0.2
cffi>=1.12.2
psycopg2
APScheduler==3.0.0
И вот мой clock.py файл
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', minutes=3)
def timed_job():
print('This job is run every three minutes.')
sched.start()
Я не получаю никакого сообщения (это задание выполняется каждые три минуты) для печати в моем журнале heroku. Я зафиксировал все изменения и развернул приложение. Пожалуйста, помогите запустить мой скрипт, чтобы я продвинулся дальше для автоматизации задачи.
Это текущее состояние журнала:
2019-03-14T14:27:40.979762 00:00 heroku[clock.1]: State changed from crashed to starting
2019-03-14T14:27:47.752630 00:00 heroku[clock.1]: Starting process with command `: python clock.py`
2019-03-14T14:27:48.437785 00:00 heroku[clock.1]: State changed from starting to up
2019-03-14T14:27:50.480830 00:00 heroku[clock.1]: State changed from up to crashed
2019-03-14T14:27:50.466390 00:00 heroku[clock.1]: Process exited with status 0
Ответ №1:
2019-03-14T14:27:47.752630 00:00 heroku[clock.1]: Starting process with command ': python clock.py'
Похоже, что в вашем Procfile есть опечатка, так как команда должна читать 'python clock.py'
(обратите внимание на пропущенный двоеточие). Подходящей строкой для вашего Procfile является: clock: python clock.py
Кроме того, увеличьте масштаб процесса синхронизации, если вы еще этого не сделали. В командной строке Heroku используйте команду heroku ps:scale clock=1
.
Смотрите страницу Heroku для APScheduler для получения более подробной информации.