我在脚本中使用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
...
答案 0 :(得分:2)
我认为这里存在严重的误解。您似乎认为APScheduler以某种方式管理系统的cron作业。它不是。它是一个进程内调度程序,恰好有一个类似cron的触发器来调度作业。 APScheduler与任何cron守护程序或crontabs都没有任何联系。
从评论中更新实际答案。 API在apscheduler
官方文档中定义
scheduler.get_jobs()