AdvancePythonScheduler 暂停作业

问题描述 投票:0回答:2

我正在使用 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'
。我哪里错了?

python python-3.x apscheduler
2个回答
0
投票
scheduler.pause_job(job_id='schedule_1')

不要使用BaseScheduler。

您也可以这样做:

scheduler.get_job('schedule_1').pause()

0
投票

我做了类似的事情,但我使用变量来管理主要工作。

schedule_1 = scheduler.add_job(testTrigger, 'interval', seconds=5)

然后以下暂停或停止...

def testTrigger():
  schedule_1.pause()
  do_something_maybe_longer_than_the_interval()
  schedule_1.resume()
© www.soinside.com 2019 - 2024. All rights reserved.