Python APScheduler任务调度器
2017-03-31 09:46
543 查看
参考:
https://segmentfault.com/a/1190000007739974 http://apscheduler.readthedocs.io/en/3.0/userguide.html#modifying-jobs
# -*- coding:utf-8 -*-
'''数据分析、统计'''
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djproject.settings")
import sys
sys.path.append('/home/shangtao/www/djproject')
import django
if django.VERSION >= (1, 7): # 自动判断版本
django.setup()
from sensor.models import Device, Type, Hour_Value, Day_Value, Month_Value, Value
from bluewind.models import HourValue as BW_HourValue
from bluewind.models import DayValue as BW_DayValue
from django.db.models import Q
from django.db.models import Avg, Sum, FloatField, IntegerField
import datetime
import time
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from django.db import connection
# sentry
from raven import Client
sentry = Client('http://c435951d0ae045cb9db531b39ce214ff:d9f53e043ed84274aa6c72b0deba69d6@*.*.*.*:9999/2')
def interval_job():
print("%s: interval job." % datetime.datetime.now())
def cron_job():
print("%s: crontab job." % datetime.datetime.now())
def date_job():
print("%s: date job." % datetime.datetime.now())
jobstores = {
'default': SQLAlchemyJobStore(url='sqlite:///scheduler.sqlite')
}
executors = {
'default': ThreadPoolExecutor(5),
'processpool': ProcessPoolExecutor(1)
}
job_defaults = {
'coalesce': False,
'max_instances': 3
}
scheduler = BackgroundScheduler(daemon=True, jobstores=jobstores, executors=executors, job_defaults=job_defaults)
d1 = datetime.datetime.now()
d2 = d1 + datetime.timedelta(seconds=20)
ij = scheduler.add_job(interval_job, trigger='interval', seconds=5, )
cj = scheduler.add_job(cron_job, trigger='cron', minute=0, second=30, )
dj = scheduler.add_job(date_job, trigger='date', run_date=d2, )
# scheduler.add_job(clean_hour_Values, 'cron', minute=0, second=30)
# scheduler.add_job(clean_day_Values, 'cron', hour=23, minute=55)
'''
Jobstore default:
clean_hour_Values (trigger: cron[minute='0', second='30'], next run at: 2017-03-29 17:00:30 CST)
clean_day_Values (trigger: cron[hour='23', minute='55'], next run at: 2017-03-29 23:55:00 CST)
'''
print (scheduler.get_jobs())
scheduler.print_jobs()
# # delete job
# scheduler.remove_job(cj.id)
# scheduler.remove_all_jobs()
# # pause and resume job
# scheduler.pause_job(cj.id)
# scheduler.resume_job(cj.id)
# # get job
# scheduler.get_job(cj.id)
# scheduler.get_jobs()
# # modify job
# scheduler.modify_job(cj.id, name='modify_job_name')
# If you want to reschedule the job – that is, change its trigger, you can use either apscheduler.job.Job.reschedule() or reschedule_job().
scheduler.reschedule_job(cj.id, trigger='interval', seconds=2)
scheduler.print_jobs()
try:
scheduler.start()
# This is here to simulate application activity (which keeps the main thread alive).
while True:
time.sleep(60)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown() # Not strictly necessary if daemonic mode is enabled but should be done if possible
https://segmentfault.com/a/1190000007739974 http://apscheduler.readthedocs.io/en/3.0/userguide.html#modifying-jobs
# -*- coding:utf-8 -*-
'''数据分析、统计'''
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djproject.settings")
import sys
sys.path.append('/home/shangtao/www/djproject')
import django
if django.VERSION >= (1, 7): # 自动判断版本
django.setup()
from sensor.models import Device, Type, Hour_Value, Day_Value, Month_Value, Value
from bluewind.models import HourValue as BW_HourValue
from bluewind.models import DayValue as BW_DayValue
from django.db.models import Q
from django.db.models import Avg, Sum, FloatField, IntegerField
import datetime
import time
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
from apscheduler.jobstores.memory import MemoryJobStore
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from django.db import connection
# sentry
from raven import Client
sentry = Client('http://c435951d0ae045cb9db531b39ce214ff:d9f53e043ed84274aa6c72b0deba69d6@*.*.*.*:9999/2')
def interval_job():
print("%s: interval job." % datetime.datetime.now())
def cron_job():
print("%s: crontab job." % datetime.datetime.now())
def date_job():
print("%s: date job." % datetime.datetime.now())
jobstores = {
'default': SQLAlchemyJobStore(url='sqlite:///scheduler.sqlite')
}
executors = {
'default': ThreadPoolExecutor(5),
'processpool': ProcessPoolExecutor(1)
}
job_defaults = {
'coalesce': False,
'max_instances': 3
}
scheduler = BackgroundScheduler(daemon=True, jobstores=jobstores, executors=executors, job_defaults=job_defaults)
d1 = datetime.datetime.now()
d2 = d1 + datetime.timedelta(seconds=20)
ij = scheduler.add_job(interval_job, trigger='interval', seconds=5, )
cj = scheduler.add_job(cron_job, trigger='cron', minute=0, second=30, )
dj = scheduler.add_job(date_job, trigger='date', run_date=d2, )
# scheduler.add_job(clean_hour_Values, 'cron', minute=0, second=30)
# scheduler.add_job(clean_day_Values, 'cron', hour=23, minute=55)
'''
Jobstore default:
clean_hour_Values (trigger: cron[minute='0', second='30'], next run at: 2017-03-29 17:00:30 CST)
clean_day_Values (trigger: cron[hour='23', minute='55'], next run at: 2017-03-29 23:55:00 CST)
'''
print (scheduler.get_jobs())
scheduler.print_jobs()
# # delete job
# scheduler.remove_job(cj.id)
# scheduler.remove_all_jobs()
# # pause and resume job
# scheduler.pause_job(cj.id)
# scheduler.resume_job(cj.id)
# # get job
# scheduler.get_job(cj.id)
# scheduler.get_jobs()
# # modify job
# scheduler.modify_job(cj.id, name='modify_job_name')
# If you want to reschedule the job – that is, change its trigger, you can use either apscheduler.job.Job.reschedule() or reschedule_job().
scheduler.reschedule_job(cj.id, trigger='interval', seconds=2)
scheduler.print_jobs()
try:
scheduler.start()
# This is here to simulate application activity (which keeps the main thread alive).
while True:
time.sleep(60)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown() # Not strictly necessary if daemonic mode is enabled but should be done if possible
相关文章推荐
- Python定时任务框架APScheduler
- [转]Python定时任务框架APScheduler
- Python中定时任务框架APScheduler快速入门指南
- 如何在python的定时任务框架apscheduler中寻找丢失的定时任务
- Python定时任务框架APScheduler 3.0.3 Cron示例
- Python定时任务框架APScheduler 3.0.3 Cron示例
- python定时任务运行框架APScheduler解析
- python APScheduler定时任务框架
- Python定时任务框架APScheduler
- Python定时任务APScheduler框架的使用
- Python定时任务框架APScheduler 3.0.3 Cron示例
- JobTracker任务调度器之JobQueueTaskScheduler
- Python定时调度--多任务同一时间开始跑 scheduler.enterabs
- python APScheduler
- JobTracker任务调度器之JobQueueTaskScheduler
- 企业级任务调度框架Quartz(6) 任务调度器(Scheduler)
- Python下APScheduler的快速指南
- mapreduce源码分析之默认的任务调度器——JobQueueTaskScheduler
- TaskScheduler一个.NET版任务调度器
- 21 BasicTaskScheduler基本任务调度器(一)——Live555源码阅读(一)任务调度相关类