-
Notifications
You must be signed in to change notification settings - Fork 0
/
schedule.py
37 lines (31 loc) · 1.06 KB
/
schedule.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# coding=utf-8
"""
定时任务
"""
import logging
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.executors.pool import ThreadPoolExecutor
from pytz import timezone
import redis
from app import app
from archive import ArchiveManager
from models import Activity
if 'REDIS' in app.config:
redis_client = redis.StrictRedis.from_url(app.config['REDIS'], decode_responses=True)
else:
redis_client = redis.StrictRedis(decode_responses=True)
manager = ArchiveManager(redis_client)
def archive():
for activity in Activity.select().execute():
manager.archive(activity)
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('quiz_task')
logger.addHandler(logging.StreamHandler())
executors = {'default': ThreadPoolExecutor(20)}
scheduler = BlockingScheduler(logger=logger, executors=executors, timezone=timezone('Asia/Shanghai'))
scheduler.add_job(archive, trigger='cron', hour='1')
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass