“APScheduler启动调度器”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
完整代码
 
(未显示2个用户的3个中间版本)
第4行: 第4行:
 
启动调度器只需要调用调度器的start()方法,下面分别使用不同的作业存储器来举例说明。
 
启动调度器只需要调用调度器的start()方法,下面分别使用不同的作业存储器来举例说明。
 
==方法一:使用默认的作业存储器==
 
==方法一:使用默认的作业存储器==
 +
===引入模块===
 +
<nowiki>
 +
# -*- coding: utf-8 -*-
 +
# !/usr/local/bin/python
 +
# Time: 2018/10/13 20:27:58
 +
# Description:
 +
# File Name: start_schduler.py
 +
 +
from apscheduler.schedulers.blocking import BlockingScheduler
 +
import datetime
 +
from apscheduler.jobstores.memory import MemoryJobStore
 +
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
 +
 +
</nowiki>
 +
 +
===调度器配置===
 +
<nowiki>
 +
jobstores = {
 +
    'default': MemoryJobStore()
 +
 +
}
 +
executors = {
 +
    'default': ThreadPoolExecutor(20),
 +
    'processpool': ProcessPoolExecutor(10)
 +
}
 +
job_defaults = {
 +
    'coalesce': False,
 +
    'max_instances': 3
 +
}</nowiki>
 +
 +
===定义工作任务===
 +
<nowiki>
 +
def my_job(id='my_job'):
 +
    print (id,'-->',datetime.datetime.now())</nowiki>
 +
===添加工作任务===
 +
<nowiki>
 +
scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
 +
scheduler.add_job(my_job, args=['job_interval',],id='job_interval',trigger='interval', seconds=5,replace_existing=True)
 +
scheduler.add_job(my_job, args=['job_cron',],id='job_cron',trigger='cron',month='4-8,11-12',hour='7-11', second='*/10',\
 +
                  end_date='2018-05-30')
 +
scheduler.add_job(my_job, args=['job_once_now',],id='job_once_now')
 +
scheduler.add_job(my_job, args=['job_date_once',],id='job_date_once',trigger='date',run_date='2020-06-20 08:48:05')</nowiki>
 +
 +
===启动调度器===
 +
<nowiki>
 +
try:
 +
    scheduler.start()
 +
except SystemExit:
 +
    print('exit')
 +
    exit()</nowiki>
 
===完整代码===
 
===完整代码===
 
  <nowiki># -*- coding: utf-8 -*-
 
  <nowiki># -*- coding: utf-8 -*-
第18行: 第68行:
 
def my_job(id='my_job'):
 
def my_job(id='my_job'):
 
     print (id,'-->',datetime.datetime.now())
 
     print (id,'-->',datetime.datetime.now())
 +
 +
import pandas as pd
 +
 +
def my_job2(id='my_job'):
 +
    df = pd.read_html("http://www.air-level.com/air/jinan/", encoding='utf-8', header=0)[0]
 +
    df.to_excel('xian_tianqi.xlsx', index=False)
 +
 +
 
jobstores = {
 
jobstores = {
 
     'default': MemoryJobStore()
 
     'default': MemoryJobStore()
第45行: 第103行:
  
 
==方法二:使用数据库作为作业存储器==
 
==方法二:使用数据库作为作业存储器==
 +
 +
<nowiki>
 +
# -*- coding: utf-8 -*-
 +
# !/usr/local/bin/python
 +
# Time: 2018/10/13 20:29:03
 +
# Description:
 +
# File Name: start_scheduler_db.py
 +
 +
from apscheduler.schedulers.blocking import BlockingScheduler
 +
import datetime
 +
from apscheduler.jobstores.memory import MemoryJobStore
 +
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
 +
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
 +
def my_job(id='my_job'):
 +
    print (id,'-->',datetime.datetime.now())
 +
jobstores = {
 +
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
 +
}
 +
executors = {
 +
    'default': ThreadPoolExecutor(20),
 +
    'processpool': ProcessPoolExecutor(10)
 +
}
 +
job_defaults = {
 +
    'coalesce': False,
 +
    'max_instances': 3
 +
}
 +
scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
 +
scheduler.add_job(my_job, args=['job_interval',],id='job_interval',trigger='interval', seconds=5,replace_existing=True)
 +
scheduler.add_job(my_job, args=['job_cron',],id='job_cron',trigger='cron',month='4-8,11-12',hour='7-11', second='*/10',\
 +
                  end_date='2018-05-30')
 +
scheduler.add_job(my_job, args=['job_once_now',],id='job_once_now')
 +
scheduler.add_job(my_job, args=['job_date_once',],id='job_date_once',trigger='date',run_date='2018-04-05 07:48:05')
 +
try:
 +
    scheduler.start()
 +
except SystemExit:
 +
    print('exit')
 +
    exit() 
 +
 +
</nowiki>

2021年5月6日 (四) 14:40的最新版本

启动调度器

启动调度器前需要先添加作业,有两种方法可以向调度器添加作业:一是通过接口add_job();二是通过使用函数装饰器,其中add_job()返回一个apscheduler.job.Job类的实例,用于后续修改或删除作业。

启动调度器只需要调用调度器的start()方法,下面分别使用不同的作业存储器来举例说明。

方法一:使用默认的作业存储器

引入模块

# -*- coding: utf-8 -*-
# !/usr/local/bin/python
# Time: 2018/10/13 20:27:58
# Description:
# File Name: start_schduler.py

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor


调度器配置

jobstores = {
    'default': MemoryJobStore()

}
executors = {
    'default': ThreadPoolExecutor(20),
    'processpool': ProcessPoolExecutor(10)
}
job_defaults = {
    'coalesce': False,
    'max_instances': 3
}

定义工作任务

def my_job(id='my_job'):
    print (id,'-->',datetime.datetime.now())

添加工作任务

scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
scheduler.add_job(my_job, args=['job_interval',],id='job_interval',trigger='interval', seconds=5,replace_existing=True)
scheduler.add_job(my_job, args=['job_cron',],id='job_cron',trigger='cron',month='4-8,11-12',hour='7-11', second='*/10',\
                  end_date='2018-05-30')
scheduler.add_job(my_job, args=['job_once_now',],id='job_once_now')
scheduler.add_job(my_job, args=['job_date_once',],id='job_date_once',trigger='date',run_date='2020-06-20 08:48:05')

启动调度器

try:
    scheduler.start()
except SystemExit:
    print('exit')
    exit()

完整代码

# -*- coding: utf-8 -*-
# !/usr/local/bin/python
# Time: 2018/10/13 20:27:58
# Description:
# File Name: start_schduler.py

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor

def my_job(id='my_job'):
    print (id,'-->',datetime.datetime.now())

import pandas as pd

def my_job2(id='my_job'):
    df = pd.read_html("http://www.air-level.com/air/jinan/", encoding='utf-8', header=0)[0]
    df.to_excel('xian_tianqi.xlsx', index=False)


jobstores = {
    'default': MemoryJobStore()

}
executors = {
    'default': ThreadPoolExecutor(20),
    'processpool': ProcessPoolExecutor(10)
}
job_defaults = {
    'coalesce': False,
    'max_instances': 3
}
scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
scheduler.add_job(my_job, args=['job_interval',],id='job_interval',trigger='interval', seconds=5,replace_existing=True)
scheduler.add_job(my_job, args=['job_cron',],id='job_cron',trigger='cron',month='4-8,11-12',hour='7-11', second='*/10',\
                  end_date='2018-05-30')
scheduler.add_job(my_job, args=['job_once_now',],id='job_once_now')
scheduler.add_job(my_job, args=['job_date_once',],id='job_date_once',trigger='date',run_date='2018-04-05 07:48:05')
try:
    scheduler.start()
except SystemExit:
    print('exit')
    exit()


方法二:使用数据库作为作业存储器

# -*- coding: utf-8 -*-
# !/usr/local/bin/python
# Time: 2018/10/13 20:29:03
# Description:
# File Name: start_scheduler_db.py

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
def my_job(id='my_job'):
    print (id,'-->',datetime.datetime.now())
jobstores = {
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
executors = {
    'default': ThreadPoolExecutor(20),
    'processpool': ProcessPoolExecutor(10)
}
job_defaults = {
    'coalesce': False,
    'max_instances': 3
}
scheduler = BlockingScheduler(jobstores=jobstores, executors=executors, job_defaults=job_defaults)
scheduler.add_job(my_job, args=['job_interval',],id='job_interval',trigger='interval', seconds=5,replace_existing=True)
scheduler.add_job(my_job, args=['job_cron',],id='job_cron',trigger='cron',month='4-8,11-12',hour='7-11', second='*/10',\
                  end_date='2018-05-30')
scheduler.add_job(my_job, args=['job_once_now',],id='job_once_now')
scheduler.add_job(my_job, args=['job_date_once',],id='job_date_once',trigger='date',run_date='2018-04-05 07:48:05')
try:
    scheduler.start()
except SystemExit:
    print('exit')
    exit()