summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/plugins/bilibili_dynamic/__init__.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/ATRI/plugins/bilibili_dynamic/__init__.py b/ATRI/plugins/bilibili_dynamic/__init__.py
index 63b2e54..c2ba04d 100644
--- a/ATRI/plugins/bilibili_dynamic/__init__.py
+++ b/ATRI/plugins/bilibili_dynamic/__init__.py
@@ -1,3 +1,7 @@
+from apscheduler.triggers.base import BaseTrigger
+from apscheduler.triggers.combining import AndTrigger
+from apscheduler.triggers.interval import IntervalTrigger
+
from ATRI.utils.apscheduler import scheduler
from ATRI.utils import timestamp2datetime
@@ -130,11 +134,24 @@ from queue import Queue
tq = Queue()
+class BilibiliDynamicCheckEnabledTrigger(BaseTrigger):
+ # 自定义trigger 保证服务开启
+ # 实现abstract方法 <get_next_fire_time>
+ def get_next_fire_time(self, previous_fire_time, now):
+ subscriptor = BilibiliDynamicSubscriptor()
+ config = subscriptor.load_service()
+ if config["enabled"] == False:
+ return None
+ else:
+ return now
+
+
# 业务逻辑
# 每10s从任务队列中拉一个uid出来,调用api进行查询
# 当任务队列为空时,从数据库读取订阅列表,并塞入任务队列tq中
@scheduler.scheduled_job(
- "interval", name="b站动态检查", seconds=10, max_instances=3, misfire_grace_time=60
+ AndTrigger([IntervalTrigger(seconds=10),
+ BilibiliDynamicCheckEnabledTrigger()]), name="b站动态检查", max_instances=3, misfire_grace_time=60
)
async def _check_dynamic():
from ATRI.database.models import Subscription