Запланированные задания с пользовательскими процессами синхронизации в Python с APScheduler не выполняются

#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 для получения более подробной информации.