我正在尝试使用APScheduler(v3.0.0)计划一个间隔作业。
我试过:
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
def my_interval_job():
print 'Hello World!'
sched.add_job(my_interval_job, 'interval', seconds=5)
sched.start()
以及
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('interval', id='my_job_id', seconds=5)
def my_interval_job():
print 'Hello World!'
sched.start()
两者都应该根据the docs工作,但该作业从不激发。。。
更新:
结果发现还有一些与环境相关的东西阻止了任务的运行。今天早上,任务运行良好,没有对昨天的代码进行任何修改。
更新2:
经过进一步的测试,我发现“间隔”的工作似乎通常是不稳定的。。。上面的代码现在可以在我的开发环境中工作,但当我部署到一个staging env(我使用heroku应用程序进行staging)时就不行了。我还有其他apscheduler“cron”作业,它们在staging/production环境中工作得很好。
当我为“apscheduler.schedulers”记录器打开调试日志记录时,日志指示添加了间隔作业:
Added job "my_cron_job1" to job store "default"
Added job "my_cron_job2" to job store "default"
Added job "my_interval_job" to job store "default"
Scheduler started
Adding job tentatively -- it will be properly scheduled when the scheduler starts
Adding job tentatively -- it will be properly scheduled when the scheduler starts
Looking for jobs to run
Next wakeup is due at 2015-03-24 15:05:00-07:00 (in 254.210542 seconds)
当间隔作业设置为5秒时,下一次唤醒如何在254秒后到期??
你需要让这根线活下来。这是我如何使用它的一个例子。
我还没有弄清楚是什么导致了最初的问题,但是我通过交换作业的调度顺序来解决了这个问题,因此“interval”作业在“cron”作业之前就被调度了。
也就是说,我改变了这个:
对此:
现在cron作业和interval作业在这两个环境中都可以正常运行。
文档中有一个错误。我已经修好了。 第一行应该是:
不过,这会引起一场严重的恐慌,但你什么也没提。 你试过任何提供的examples吗?
相关问题 更多 >
编程相关推荐