From 8e356923c764310ce770cf05087028e9fb0da0ad Mon Sep 17 00:00:00 2001 From: CHunYenc Date: Sat, 17 Sep 2022 14:44:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20scheduler=20=E5=84=B2=E5=AD=98?= =?UTF-8?q?=E6=96=BC=20SQLAlchemyJobStore,=20=E4=B8=A6=E5=9C=A8=E5=AE=9A?= =?UTF-8?q?=E6=99=82=E8=BC=B8=E5=85=A5=E6=99=82=E9=96=93=E6=99=82=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E5=88=A4=E6=96=B7.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/configs/config.py | 16 ++++++++++++++++ applications/view/admin/task.py | 13 +++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/applications/configs/config.py b/applications/configs/config.py index 18b9edd..cafec6b 100644 --- a/applications/configs/config.py +++ b/applications/configs/config.py @@ -2,6 +2,9 @@ import logging import os from urllib.parse import quote_plus as urlquote +from apscheduler.executors.pool import ThreadPoolExecutor +from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore + class BaseConfig: @@ -59,6 +62,19 @@ class BaseConfig: # 默认发件人的邮箱,这里填写和MAIL_USERNAME一致即可 MAIL_DEFAULT_SENDER = ('pear admin', os.getenv('MAIL_USERNAME') or '123@qq.com') + # 設置 APSCHEDULER 參數 + SCHEDULER_API_ENABLED = os.getenv('SCHEDULER_API_ENABLED') or False + SCHEDULER_JOBSTORES: dict = { + 'default': SQLAlchemyJobStore(url=f'mysql+pymysql://{MYSQL_USERNAME}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}') + } + SCHEDULER_EXECUTORS: dict = { + 'default': ThreadPoolExecutor(20) + } + SCHEDULER_JOB_DEFAULTS: dict = { + 'coalesce': False, + 'max_instances': 3 + } + class TestingConfig(BaseConfig): """ 测试配置 """ diff --git a/applications/view/admin/task.py b/applications/view/admin/task.py index 5c825a6..df3367d 100644 --- a/applications/view/admin/task.py +++ b/applications/view/admin/task.py @@ -1,6 +1,6 @@ from flask import Blueprint, request, render_template from flask_apscheduler.utils import job_to_dict - +from datetime import datetime as dt from applications.common.tasks import tasks from applications.common.tasks.tasks import task_list from applications.common.utils.http import table_api, fail_api, success_api @@ -56,12 +56,22 @@ def save(): run_date=datetime, replace_existing=True) elif type == 'interval': + # load time + time = dt.strptime(time, "%H:%M:%S").time() + interval_seconds = 0 + if time.hour != 0: + interval_seconds += time.hour * 60 * 60 + if time.minute != 0: + interval_seconds += time.minute * 60 + if time.second != 0: + interval_seconds += time.second scheduler.add_job( func=getattr(tasks, functions), id=_id, name=name, args=(1, 1), trigger=type, + seconds=interval_seconds, replace_existing=True) elif type == 'cron': scheduler.add_job( @@ -71,7 +81,6 @@ def save(): args=(1, 1), trigger=type, replace_existing=True) - return success_api() -- Gitee From d865081199fd183ed48c161f6735b377ca252247 Mon Sep 17 00:00:00 2001 From: CHunYenc Date: Sat, 17 Sep 2022 15:07:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E7=84=A1=E6=B3=95=E5=88=AA=E9=99=A4?= =?UTF-8?q?=20task.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/view/admin/task.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/view/admin/task.py b/applications/view/admin/task.py index df3367d..0f6a79e 100644 --- a/applications/view/admin/task.py +++ b/applications/view/admin/task.py @@ -105,9 +105,9 @@ def dis_enable(): return fail_api(msg="数据错误") -@admin_task.delete('/remove/') +@admin_task.delete('/remove//') def remove_job(_id): # 移除 - scheduler.remove_job(str(_id)) + scheduler.remove_job(_id) return success_api(msg="删除成功") # scheduler.add_job(func=task1, id='2', args=(1, 1), trigger='cron', day_of_week='0-6', hour=18, minute=24, -- Gitee