1
1
from apscheduler .schedulers .background import BackgroundScheduler
2
2
from apscheduler .triggers .interval import IntervalTrigger
3
3
from apscheduler .triggers .cron import CronTrigger
4
- import datetime
4
+ from datetime import datetime
5
5
import time
6
6
7
7
from mcim_sync .database .mongodb import init_mongodb_syncengine
@@ -37,116 +37,103 @@ def main():
37
37
# 创建调度器
38
38
scheduler = BackgroundScheduler ()
39
39
if config .job_config .curseforge_refresh :
40
- # 添加定时刷新任务,每小时执行一次
40
+ curseforge_refresh_trigger = CronTrigger . from_crontab ( config . cron_trigger . curseforge_refresh ) if config . use_cron else IntervalTrigger ( seconds = config . interval . curseforge_refresh )
41
41
curseforge_refresh_job = scheduler .add_job (
42
42
refresh_curseforge_with_modify_date ,
43
- trigger = IntervalTrigger ( seconds = config . interval . curseforge_refresh ) ,
43
+ trigger = curseforge_refresh_trigger ,
44
44
name = "curseforge_refresh" ,
45
45
)
46
+ log .info (f"Next run time of curseforge_refresh: { curseforge_refresh_trigger .get_next_fire_time (None , datetime .now ())} " )
46
47
47
48
if config .job_config .modrinth_refresh :
49
+ modrinth_refresh_trigger = CronTrigger .from_crontab (config .cron_trigger .modrinth_refresh ) if config .use_cron else IntervalTrigger (seconds = config .interval .modrinth_refresh )
48
50
modrinth_refresh_job = scheduler .add_job (
49
51
refresh_modrinth_with_modify_date ,
50
- trigger = IntervalTrigger ( seconds = config . interval . modrinth_refresh ) ,
52
+ trigger = modrinth_refresh_trigger ,
51
53
name = "modrinth_refresh" ,
52
54
)
55
+ log .info (f"Next run time of modrinth_refresh: { modrinth_refresh_trigger .get_next_fire_time (None , datetime .now ())} " )
53
56
54
57
if config .job_config .curseforge_refresh_full :
55
- # 添加全量刷新任务,每 48 小时执行一次
58
+ curseforge_full_refresh_trigger = CronTrigger . from_crontab ( config . cron_trigger . curseforge_refresh_full ) if config . use_cron else IntervalTrigger ( seconds = config . interval . curseforge_refresh_full )
56
59
curseforge_full_refresh_job = scheduler .add_job (
57
60
sync_curseforge_full ,
58
- trigger = IntervalTrigger ( seconds = config . interval . curseforge_refresh_full ) ,
61
+ trigger = curseforge_full_refresh_trigger ,
59
62
name = "curseforge_full_refresh" ,
60
63
)
64
+ log .info (f"Next run time of curseforge_full_refresh: { curseforge_full_refresh_trigger .get_next_fire_time (None , datetime .now ())} " )
61
65
62
66
if config .job_config .modrinth_refresh_full :
63
- # 添加全量刷新任务,每 48 小时执行一次
67
+ modrinth_full_refresh_trigger = CronTrigger . from_crontab ( config . cron_trigger . modrinth_refresh_full ) if config . use_cron else IntervalTrigger ( seconds = config . interval . modrinth_refresh_full )
64
68
modrinth_full_refresh_job = scheduler .add_job (
65
- sync_modrinth_queue ,
66
- trigger = IntervalTrigger ( seconds = config . interval . modrinth_refresh_full ) ,
69
+ refresh_modrinth_full ,
70
+ trigger = modrinth_full_refresh_trigger ,
67
71
name = "modrinth_full_refresh" ,
68
72
)
73
+ log .info (f"Next run time of modrinth_full_refresh: { modrinth_full_refresh_trigger .get_next_fire_time (None , datetime .now ())} " )
69
74
70
75
if config .job_config .sync_curseforge_by_queue :
71
- # 添加定时同步任务,用于检查 api 未找到的请求数据
76
+ curseforge_sync_trigger = CronTrigger . from_crontab ( config . cron_trigger . sync_curseforge_by_queue ) if config . use_cron else IntervalTrigger ( seconds = config . interval . sync_curseforge_by_queue )
72
77
curseforge_sync_job = scheduler .add_job (
73
78
sync_curseforge_queue ,
74
- trigger = IntervalTrigger ( seconds = config . interval . sync_curseforge_by_queue ) ,
79
+ trigger = curseforge_sync_trigger ,
75
80
name = "sync_curseforge_queue" ,
76
81
)
82
+ log .info (f"Next run time of sync_curseforge_queue: { curseforge_sync_trigger .get_next_fire_time (None , datetime .now ())} " )
77
83
78
84
if config .job_config .sync_modrinth_by_queue :
79
- # 由 sync_modrinth_by_search 平替
85
+ modrinth_sync_trigger = CronTrigger . from_crontab ( config . cron_trigger . sync_modrinth_by_queue ) if config . use_cron else IntervalTrigger ( seconds = config . interval . sync_modrinth_by_queue )
80
86
modrinth_sync_job = scheduler .add_job (
81
87
sync_modrinth_queue ,
82
- trigger = IntervalTrigger ( seconds = config . interval . sync_modrinth_by_queue ) ,
88
+ trigger = modrinth_sync_trigger ,
83
89
name = "sync_modrinth_queue" ,
84
90
)
91
+ log .info (f"Next run time of sync_modrinth_by_queue: { modrinth_sync_trigger .get_next_fire_time (None , datetime .now ())} " )
85
92
86
93
if config .job_config .sync_modrinth_by_search :
94
+ sync_modrinth_by_search_trigger = CronTrigger .from_crontab (config .cron_trigger .sync_modrinth_by_search ) if config .use_cron else IntervalTrigger (seconds = config .interval .sync_modrinth_by_search )
87
95
sync_modrinth_by_search_job = scheduler .add_job (
88
96
sync_modrinth_by_search ,
89
- trigger = IntervalTrigger ( seconds = config . interval . sync_modrinth_by_search ) ,
97
+ trigger = sync_modrinth_by_search_trigger ,
90
98
name = "sync_modrinth_by_search" ,
91
99
)
100
+ log .info (f"Next run time of sync_modrinth_by_search: { sync_modrinth_by_search_trigger .get_next_fire_time (None , datetime .now ())} " )
92
101
93
102
if config .job_config .sync_curseforge_by_search :
103
+ sync_curseforge_by_search_trigger = CronTrigger .from_crontab (config .cron_trigger .sync_curseforge_by_search ) if config .use_cron else IntervalTrigger (seconds = config .interval .sync_curseforge_by_search )
94
104
sync_curseforge_by_search_job = scheduler .add_job (
95
105
sync_curseforge_by_search ,
96
- trigger = IntervalTrigger ( seconds = config . interval . sync_curseforge_by_search ) ,
106
+ trigger = sync_curseforge_by_search_trigger ,
97
107
name = "sync_curseforge_by_search" ,
98
108
)
109
+ log .info (f"Next run time of sync_curseforge_by_search: { sync_curseforge_by_search_trigger .get_next_fire_time (None , datetime .now ())} " )
99
110
100
111
if config .job_config .curseforge_categories :
112
+ curseforge_categories_trigger = CronTrigger .from_crontab (config .cron_trigger .curseforge_categories ) if config .use_cron else IntervalTrigger (seconds = config .interval .curseforge_categories )
101
113
curseforge_categories_refresh_job = scheduler .add_job (
102
114
refresh_curseforge_categories ,
103
- # trigger=IntervalTrigger(seconds=config.interval.curseforge_categories),
104
- # 使用 CronTrigger 每天执行一次,指定 0 点
105
- trigger = CronTrigger (
106
- hour = "0" ,
107
- minute = "0" ,
108
- second = "0" ,
109
- day_of_week = "*" ,
110
- month = "*" ,
111
- year = "*" ,
112
- ),
115
+ trigger = curseforge_categories_trigger ,
113
116
name = "curseforge_categories_refresh" ,
114
- # next_run_time=datetime.datetime.now(), # 立即执行一次任务
115
117
)
118
+ log .info (f"Next run time of curseforge_categories_refresh: { curseforge_categories_trigger .get_next_fire_time (None , datetime .now ())} " )
116
119
117
120
if config .job_config .modrinth_tags :
121
+ modrinth_tags_trigger = CronTrigger .from_crontab (config .cron_trigger .modrinth_tags ) if config .use_cron else IntervalTrigger (seconds = config .interval .modrinth_tags )
118
122
modrinth_refresh_tags_job = scheduler .add_job (
119
123
refresh_modrinth_tags ,
120
- # trigger=IntervalTrigger(seconds=config.interval.modrinth_tags),
121
- # 使用 CronTrigger 每天执行一次
122
- trigger = CronTrigger (
123
- hour = "0" ,
124
- minute = "0" ,
125
- second = "0" ,
126
- day_of_week = "*" ,
127
- month = "*" ,
128
- year = "*" ,
129
- ),
124
+ trigger = modrinth_tags_trigger ,
130
125
name = "modrinth_refresh_tags" ,
131
- # next_run_time=datetime.datetime.now(), # 立即执行一次任务
132
126
)
127
+ log .info (f"Next run time of modrinth_refresh_tags: { modrinth_tags_trigger .get_next_fire_time (None , datetime .now ())} " )
133
128
134
129
if config .telegram_bot and config .job_config .global_statistics :
135
- # 单独发布统计信息
130
+ statistics_trigger = CronTrigger . from_crontab ( config . cron_trigger . global_statistics ) if config . use_cron else IntervalTrigger ( seconds = config . interval . global_statistics )
136
131
statistics_job = scheduler .add_job (
137
132
send_statistics_to_telegram ,
138
- # trigger=IntervalTrigger(seconds=config.interval.global_statistics),
139
- # 使用 CronTrigger 每天执行一次
140
- trigger = CronTrigger (
141
- hour = "0" ,
142
- minute = "0" ,
143
- second = "0" ,
144
- day_of_week = "*" ,
145
- month = "*" ,
146
- year = "*" ,
147
- ),
133
+ trigger = statistics_trigger ,
148
134
name = "statistics" ,
149
135
)
136
+ log .info (f"Next run time of global_statistics: { statistics_trigger .get_next_fire_time (None , datetime .now ())} " )
150
137
151
138
# 启动调度器
152
139
scheduler .start ()
@@ -161,4 +148,4 @@ def main():
161
148
162
149
163
150
if __name__ == "__main__" :
164
- main ()
151
+ main ()
0 commit comments