最简单的例子
import time
from threading import Thread
from apscheduler import events
from apscheduler.events import JobEvent
from loguru import logger
from apscheduler.triggers.cron import CronTrigger
from apscheduler.schedulers.blocking import BlockingScheduler
class MyTask(Thread):
"""
MyTask().start()启动的函数必须是run()
"""
def __init__(self):
Thread.__init__(self)
def run(self):
print("Hello World")
MyTask().start()
加入定时器执行任务的例子
class MyTask(Thread):
"""
MyTask().start()启动的函数必须是run()
"""
def __init__(self):
Thread.__init__(self)
self.scheduler = BlockingScheduler()
def _start_run(self):
time.sleep(1)
print("EXE TASK ING ...")
time.sleep(1)
def init_job_completed_listener(self, event, name='赢家复盘'):
if isinstance(event, JobEvent):
if event.code == events.EVENT_JOB_EXECUTED:
logger.info("{} 任务执行成功 event.job_id={}".format(name, event.job_id))
elif event.code == events.EVENT_JOB_ERROR:
logger.error("{} 任务执行失败 event.job_id={}".format(name, event.job_id))
else:
pass
def run(self):
print("Hello World")
# 监听任务回调查看是否成功
self.scheduler.add_listener(self.init_job_completed_listener)
# 小时定时
# trig_start = CronTrigger(day_of_week='mon-sun', hour='11,15', minute='00', second='00')
# self.scheduler.add_job(id='trig_start', func=self._start_run, trigger=trig_start)
# 每隔2秒执行一次
self.scheduler.add_job(self._start_run, 'interval', id='trig_start', seconds=2)
self.scheduler.start()
MyTask().start()
# Hello World
# EXE TASK ING ...
# Execution of job "MyTask._start_run (trigger: interval[0:00:02], next run at: 2020-09-29 18:03:10 CST)" skipped: maximum number of running instances reached (1)
# 2020-09-29 18:03:10.155 | INFO | __main__:init_job_completed_listener:37 - 赢家复盘 任务执行成功 event.job_id=trig_start
# EXE TASK ING ...
# Execution of job "MyTask._start_run (trigger: interval[0:00:02], next run at: 2020-09-29 18:03:14 CST)" skipped: maximum number of running instances reached (1)
# 2020-09-29 18:03:14.155 | INFO | __main__:init_job_completed_listener:37 - 赢家复盘 任务执行成功 event.job_id=trig_start
# EXE TASK ING ...
非继承线程类而是直接新开线程
import threading
class MyTask(object):
"""
MyTask().start()启动的函数必须是run()
"""
def __init__(self):
pass
def _start_run(self):
print("Hello World")
def start(self):
# 开启线程, 任务为定时器, 加监控
threading_obj = threading.Thread(target=self._start_run, args=())
threading_obj.start()
MyTask().start()