From 2e9007a16fb3ad4902513dc98b95478a9e1ec6da Mon Sep 17 00:00:00 2001 From: maxinxin <728892034@qq.com> Date: Wed, 11 Jun 2025 13:53:18 +0800 Subject: [PATCH] xinxin --- __pycache__/tools.cpython-36.pyc | Bin 30321 -> 29129 bytes requirements.txt | 1 + scheduler_init_proxy.py | 107 +++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 scheduler_init_proxy.py diff --git a/__pycache__/tools.cpython-36.pyc b/__pycache__/tools.cpython-36.pyc index 15785ecb21fb4bc45c16db9ae1cebf9e4681a714..bfded650e1eb10a5fe23b5d3e576ea142b3d386d 100644 GIT binary patch delta 9228 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 GkpBk^ei{(~ diff --git a/requirements.txt b/requirements.txt index fe5e025..f26ea2a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -48,3 +48,4 @@ typing_extensions==4.1.1 urllib3==1.26.20 xlrd==1.2.0 zipp==3.6.0 +redis==4.3.6 \ No newline at end of file diff --git a/scheduler_init_proxy.py b/scheduler_init_proxy.py new file mode 100644 index 0000000..bae44b2 --- /dev/null +++ b/scheduler_init_proxy.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +定时执行 init_proxy.py 脚本 +每整十分钟执行一次(00、10、20、30、40、50分) +""" + +import time +import datetime +import subprocess +import sys +import os +import logging +from pathlib import Path + +# 设置日志 +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + handlers=[ + logging.FileHandler('scheduler_init_proxy.log', encoding='utf-8'), + logging.StreamHandler() + ] +) +logger = logging.getLogger(__name__) + +def execute_init_proxy(): + """执行 init_proxy.py 脚本""" + try: + script_path = Path(__file__).parent / "init_proxy.py" + if not script_path.exists(): + logger.error(f"脚本文件不存在: {script_path}") + return False + + # 使用当前 Python 解释器执行脚本 - 兼容老版本Python + result = subprocess.run( + [sys.executable, str(script_path)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True + ) + + if result.returncode == 0: + logger.info("init_proxy.py 执行成功") + if result.stdout and result.stdout.strip(): + logger.info(f"输出: {result.stdout.strip()}") + else: + logger.error(f"init_proxy.py 执行失败,返回码: {result.returncode}") + if result.stderr and result.stderr.strip(): + logger.error(f"错误信息: {result.stderr.strip()}") + + return result.returncode == 0 + + except Exception as e: + logger.error(f"执行 init_proxy.py 时发生异常: {e}") + return False + +def wait_for_next_execution(): + """等待到下一个整十分钟""" + now = datetime.datetime.now() + current_minute = now.minute + + # 计算下一个整十分钟 + next_minute = ((current_minute // 10) + 1) * 10 + + # 处理小时进位 + if next_minute >= 60: + next_minute = 0 + next_execution = now.replace(minute=0, second=0, microsecond=0) + datetime.timedelta(hours=1) + else: + next_execution = now.replace(minute=next_minute, second=0, microsecond=0) + + wait_seconds = (next_execution - now).total_seconds() + logger.info(f"当前时间: {now.strftime('%Y-%m-%d %H:%M:%S')}") + logger.info(f"下次执行时间: {next_execution.strftime('%Y-%m-%d %H:%M:%S')}") + logger.info(f"等待 {wait_seconds:.0f} 秒") + + return wait_seconds + +def main(): + """主函数""" + logger.info("代理重置定时器启动") + logger.info("脚本将在每整十分钟执行一次 init_proxy.py") + + # 首次执行 + logger.info("执行首次代理重置...") + execute_init_proxy() + + # 定时循环 + while True: + try: + wait_seconds = wait_for_next_execution() + time.sleep(wait_seconds) + + logger.info("开始执行定时任务...") + execute_init_proxy() + + except KeyboardInterrupt: + logger.info("接收到中断信号,程序退出") + break + except Exception as e: + logger.error(f"定时器运行异常: {e}") + # 发生异常时等待60秒后继续 + time.sleep(60) + +if __name__ == "__main__": + main() \ No newline at end of file