我正在使用 APScheduler,希望根据请求暂停和恢复作业。下面是我尝试过的代码。
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.mongodb import MongoDBJobStore
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.schedulers.base import BaseScheduler
jobstores = {
'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
executors = {
'default': ThreadPoolExecutor(20),
'processpool': ProcessPoolExecutor(5)
}
job_defaults = {
'coalesce': False,
'max_instances': 3
}
scheduler = BackgroundScheduler(jobstores=jobstores, executors=executors,
job_defaults=job_defaults, timezone=utc)
def testTrigger():
print("APScheduler...")
//Adding Job
scheduler.add_job(testTrigger,'interval',seconds=5,id='schedule_1')
//Pausing Job
BaseScheduler.pause_job(job_id='schedule_1')
我面临以下错误
pause_job() missing 1 required positional argument: 'self'
。我哪里错了?
scheduler.pause_job(job_id='schedule_1')
不要使用BaseScheduler。
您也可以这样做:
scheduler.get_job('schedule_1').pause()
我做了类似的事情,但我使用变量来管理主要工作。
schedule_1 = scheduler.add_job(testTrigger, 'interval', seconds=5)
然后以下暂停或停止...
def testTrigger():
schedule_1.pause()
do_something_maybe_longer_than_the_interval()
schedule_1.resume()