apscheduler工作不正常

3 投票
2 回答
5219 浏览
提问于 2025-04-17 03:57

这是代码:

#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

撰写回答