You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
66 lines
2.0 KiB
"""统一任务执行入口""" |
|
import os |
|
import time |
|
import sys |
|
from firmware_checker.tasks.firmware_task import check_versions as check_firmware_versions |
|
from firmware_checker.tasks.price_task import check_prices as check_7881_prices |
|
from firmware_checker.utils.logger import setup_logger |
|
|
|
logger = setup_logger() |
|
|
|
def run_task1(): |
|
"""执行第一个任务:固件检查""" |
|
logger.info("开始执行任务1:固件版本检查") |
|
check_firmware_versions() |
|
logger.info("任务1执行完成\n") |
|
|
|
def run_task2(): |
|
"""执行第二个任务:7881价格查询""" |
|
logger.info("开始执行任务2:7881价格查询") |
|
check_7881_prices() |
|
logger.info("任务2执行完成\n") |
|
|
|
def run_all_tasks(): |
|
"""执行所有任务""" |
|
logger.info("开始执行任务序列") |
|
logger.info("=" * 50) |
|
|
|
# 执行任务1 |
|
run_task1() |
|
|
|
# 执行任务2 |
|
# run_task2() |
|
|
|
logger.info("=" * 50) |
|
logger.info("所有任务执行完成") |
|
|
|
def main(): |
|
"""主函数,支持定时执行任务序列""" |
|
# 从环境变量读取执行间隔,默认30分钟 |
|
interval_env = os.environ.get('CHECK_INTERVAL_MINUTES') |
|
try: |
|
interval_minutes = int(interval_env) if interval_env else 30 |
|
except ValueError: |
|
logger.warning(f"检查间隔参数无效,使用默认值30分钟") |
|
interval_minutes = 30 |
|
|
|
interval_seconds = interval_minutes * 60 |
|
logger.info(f"任务执行服务启动,间隔: {interval_minutes}分钟,当前时间: {time.strftime('%Y-%m-%d %H:%M:%S')}") |
|
|
|
# 首次立即执行一次 |
|
run_all_tasks() |
|
|
|
# 然后定时执行 |
|
try: |
|
while True: |
|
logger.info(f"等待下次执行,{interval_minutes}分钟后...") |
|
time.sleep(interval_seconds) |
|
run_all_tasks() |
|
except KeyboardInterrupt: |
|
logger.info("服务已停止") |
|
except Exception as e: |
|
logger.error(f"服务运行出错: {e}") |
|
sys.exit(1) |
|
|
|
if __name__ == "__main__": |
|
main() |