列出由apscheduler安排的cron作业

时间:2017-09-27 15:09:05

标签: python python-2.7 cron apscheduler

我在脚本中使用Advanced Python Scheduler模块来安排一个月中最后一天的工作。我在CentOS机器上运行这个python脚本作为systemd脚本。

from apscheduler.schedulers.blocking import BlockingScheduler

if __name__ == '__main__':
    sched = BlockingScheduler()
    sched.add_job(lambda: my_aggregation_function(url_list, 'monthly'), 'cron', day='last')
    while True:
        sched.start()

我通过添加这些更改重新启动了我的脚本(systemd),现在脚本正在运行并安排了作业。

我的问题是如何确认我的python脚本中是否安排了作业,以便按照我的配置运行。我做了如下的cron列表,但找不到任何列表。

crontab -u root -l  

也适用于交互式shell上的测试作业,

# python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from apscheduler.schedulers.blocking import BlockingScheduler
>>> sched = BlockingScheduler()
>>> def job_function():
...     print "Hello World"
... 
>>> sched.add_job(job_function, 'cron', day='last')
<Job (id=c4b232a453dd4b5dbea5ef413d7a8c4d name=job_function)>
>>> sched.start()

如何查看提及的职位ID(c4b232a453dd4b5dbea5ef413d7a8c4d)的详细信息?是否有可能以这种方式看待。

另外,我查找了另一个模块python-crontab来管理cron个工作。这也没有列出工作

>>> from crontab import CronTab
>>> my_cron = CronTab(user='root')
>>> for job in my_cron:
...     print job
...

1 个答案:

答案 0 :(得分:2)

我认为这里存在严重的误解。您似乎认为APScheduler以某种方式管理系统的cron作业。它不是。它是一个进程内调度程序,恰好有一个类似cron的触发器来调度作业。 APScheduler与任何cron守护程序或crontabs都没有任何联系。

从评论中更新实际答案。 API在apscheduler官方文档中定义

scheduler.get_jobs()