apscheduler工作不正常
这是代码:
#coding=utf-8
from apscheduler.scheduler import Scheduler
import logging
logging.basicConfig(filename='/tmp/log', level=logging.DEBUG,
format='%(levelname)s[%(asctime)s]: %(message)s')
sched = Scheduler()
sched.start()
#@sched.interval_schedule(seconds=3)
def job_function():
logging.debug('hello world')
sched.add_interval_job(job_function, seconds=3)
如果我换成装饰器,还是不行。日志显示是这样的:
DEBUG[2011-10-09 11:02:45,175]: Looking for jobs to run
DEBUG[2011-10-09 11:02:45,176]: No jobs; waiting until a job is added
INFO[2011-10-09 11:02:45,176]: Added job "job_function (trigger: interval[0:00:03], next run at: 2011-10-09 11:02:48.176444)" to job store "default"
INFO[2011-10-09 11:02:45,177]: Shutting down thread pool
这个工作 job_function
被添加了,但从来没有被触发,为什么呢?
2 个回答
3
正如在文档中提到的,如果你希望调度器能够阻塞,也就是说在运行时不让其他代码执行,你需要把standalone
这个选项设置为True
。
s = Scheduler(standalone=True)
<add jobs here>
s.start()
确保你添加了信号处理器或者捕获中断异常哦:-)
4
如果这就是你所有的代码,那就很明显为什么它不工作了——因为应用程序在任务被安排执行之前就已经退出了。你可以查看这里提供的例子:https://bitbucket.org/agronholm/apscheduler/src/tip/examples。