From 5851894c65c81484278e189e173f3b33373e6d6b Mon Sep 17 00:00:00 2001 From: zzx Date: Thu, 21 Aug 2025 15:23:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=9B=91=E6=B5=8Bses?= =?UTF-8?q?sion=E7=9A=84=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 17 +++++++++++++---- run.py | 31 ++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index c24968b..d0a7964 100644 --- a/main.py +++ b/main.py @@ -83,14 +83,23 @@ async def test(): index = index + 1 await asyncio.sleep(config.TEST_INTERVAL * 6) -async def test_check_session(): - sessions = await AiSeoApis.list_spider_session(6) +async def check_session_by_platform_id(platform_id): + sessions = await AiSeoApis.list_spider_session(platform_id) playwright, browser = await init_browser() for session in sessions: spider = get_spider(session['platform_id'], '你好', '品牌词', browser) - result = await spider.check_session(session['id']) + await spider.check_session(session['id']) + +async def check_session(platform_ids=None): + if platform_ids is None: + platform_ids = [] + logger.info(f"开始检查session {len(platform_ids)}个平台") + for platform_id in platform_ids: + await check_session_by_platform_id(platform_id) + logger.info(f"检查session完成") + if __name__ == '__main__': - asyncio.get_event_loop().run_until_complete(test_check_session()) + asyncio.get_event_loop().run_until_complete(test()) diff --git a/run.py b/run.py index 2804c05..67e7de3 100644 --- a/run.py +++ b/run.py @@ -2,7 +2,7 @@ import asyncio import uuid from dataclasses import asdict -from datetime import datetime, timedelta +from datetime import datetime, timedelta, time import requests from apscheduler.schedulers.asyncio import AsyncIOScheduler @@ -232,6 +232,24 @@ def calc_task_date(time_range): return False, None +async def check_session_by_platform_id(platform_id): + sessions = await AiSeoApis.list_spider_session(platform_id) + playwright, browser = await init_browser() + for session in sessions: + spider = get_spider(session['platform_id'], '你好', '品牌词', browser) + await spider.check_session(session['id']) + +async def check_session(platform_ids=None): + if platform_ids is None: + platform_ids = [] + logger.info(f"开始检查session {len(platform_ids)}个平台") + for platform_id in platform_ids: + await check_session_by_platform_id(platform_id) + logger.info(f"检查session完成") + + + + async def main(): # 初始化浏览器实例 playwright, browser = await init_browser() @@ -253,6 +271,17 @@ async def main(): # 启动心跳任务 # scheduler.add_job(heartbeat, 'interval', id='heartbeat', seconds=30,args=[browser]) # logger.info('启动心跳任务成功') + + # 启动session检查任务 + scheduler.add_job( + check_session, + 'cron', + id='check_session', + hour=15, + minute=14, + args=[[1,4,6,13]] + ) + logger.info('启动session检查任务成功') scheduler.start() await asyncio.Future() # 保持事件循环运行