django 在特定时间执行一次任务(run at a specify time only once)

from django.utils import timezone

from apscheduler.schedulers.blocking import BlockingScheduler
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


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=timezone.get_current_timezone())
#scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=timezone.get_current_timezone())
#scheduler = BlockingScheduler(executors=executors, job_defaults=job_defaults, timezone=timezone.get_current_timezone())

def myjob():
    pass

try:
    scheduler.start()
    # 5s后执行myjob
# 传入时间去除毫秒
deadline = datetime.datetime.now().replace(microsecond=0) + datetime.timedelta(seconds=5) scheduler.add_job(myjob, 'date', run_date=deadline) except (KeyboardInterrupt, SystemExit): scheduler.shutdown()   

  

猜你喜欢

转载自www.cnblogs.com/zhengze/p/10715576.html