Browse Source

feat: 新增监测session的定时任务

master
zzx 2 months ago
parent
commit
5851894c65
  1. 17
      main.py
  2. 31
      run.py

17
main.py

@ -83,14 +83,23 @@ async def test():
index = index + 1 index = index + 1
await asyncio.sleep(config.TEST_INTERVAL * 6) 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() playwright, browser = await init_browser()
for session in sessions: for session in sessions:
spider = get_spider(session['platform_id'], '你好', '品牌词', browser) 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__': if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(test_check_session())
asyncio.get_event_loop().run_until_complete(test())

31
run.py

@ -2,7 +2,7 @@
import asyncio import asyncio
import uuid import uuid
from dataclasses import asdict from dataclasses import asdict
from datetime import datetime, timedelta
from datetime import datetime, timedelta, time
import requests import requests
from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.schedulers.asyncio import AsyncIOScheduler
@ -232,6 +232,24 @@ def calc_task_date(time_range):
return False, None 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(): async def main():
# 初始化浏览器实例 # 初始化浏览器实例
playwright, browser = await init_browser() playwright, browser = await init_browser()
@ -253,6 +271,17 @@ async def main():
# 启动心跳任务 # 启动心跳任务
# scheduler.add_job(heartbeat, 'interval', id='heartbeat', seconds=30,args=[browser]) # scheduler.add_job(heartbeat, 'interval', id='heartbeat', seconds=30,args=[browser])
# logger.info('启动心跳任务成功') # 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() scheduler.start()
await asyncio.Future() # 保持事件循环运行 await asyncio.Future() # 保持事件循环运行

Loading…
Cancel
Save