使用APScheduler在Python中使用自定义时钟进程的计划作业未运行

时间:2019-03-14 14:37:15

标签: python python-3.x heroku scrapy heroku-cli

我在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 个答案:

答案 0 :(得分:0)

  

2019-03-14T14:27:47.752630+00:00 heroku[clock.1]: Starting process with command ': python clock.py'

由于您的命令应显示'python clock.py'(请注意缺少的冒号),因此您的Procfile中似乎有错字。 Procfile的正确行是: clock: python clock.py

此外,如果您还没有这样做,请扩大时钟进程。在Heroku CLI中,使用命令heroku ps:scale clock=1

有关更多详细信息,请参见Heroku page for APScheduler