108 lines
2.6 KiB
Python
108 lines
2.6 KiB
Python
"""
|
|
系统服务,用于读取服务配置文件,启动或停止相关的服务。
|
|
"""
|
|
import logging
|
|
import os
|
|
import sys
|
|
from typing import Optional
|
|
|
|
from dock.govs import govs_scrape, govs_security
|
|
from dock.oa_govs import govs_push_order, oa_sign_task
|
|
from paste.core.logging import echo_log, set_logger_config
|
|
from paste.service.task_service import TaskService
|
|
|
|
logger_config_name = 'logger.govs_service'
|
|
"""
|
|
配置文件中日志配置字段名称。
|
|
"""
|
|
|
|
task_serv: Optional[TaskService] = None
|
|
"""
|
|
任务服务对象。
|
|
"""
|
|
|
|
pid_file = os.path.join(os.path.curdir, 'govs_service.pid')
|
|
"""
|
|
PID 文件路径。
|
|
"""
|
|
|
|
service_name = '省12345计划任务服务'
|
|
"""
|
|
服务名称。
|
|
"""
|
|
|
|
|
|
def init_task_service():
|
|
"""
|
|
初始化服务对象并安装具体任务。
|
|
"""
|
|
global task_serv
|
|
task_serv = TaskService(service_name=service_name, pid_file=pid_file)
|
|
|
|
# 每隔 2 小时执行,更新省12345 Token
|
|
task_serv.add_task(creator=task_serv.create_delay_task, fn=renew_govs_token, delay=3600 * 2)
|
|
|
|
# 每隔 2 小时执行,抓取 省12345 数据
|
|
task_serv.add_task(creator=task_serv.create_delay_task, fn=scrape_govs_task, delay=3600 * 2)
|
|
return task_serv
|
|
|
|
|
|
async def renew_govs_token():
|
|
try:
|
|
echo_log(f"开始执行省12345 Token 更新...")
|
|
await govs_security.login()
|
|
echo_log(f"开始执行省12345 Token 更新.")
|
|
except Exception as e:
|
|
echo_log(msg=e, level=logging.ERROR, is_log_exc=True)
|
|
|
|
|
|
async def scrape_govs_task():
|
|
fetch_size = 30
|
|
try:
|
|
echo_log(f"开始执行 GOVS<=>OA 数据同步...")
|
|
await govs_scrape.fetch_govs_task(num_per_page=fetch_size)
|
|
# 工单推送 OA 平台并签收
|
|
await govs_push_order.push_full_order(fetch_size)
|
|
echo_log(f"执行 GOVS<=>OA 数据同步完成...")
|
|
except Exception as e:
|
|
echo_log(msg=e, level=logging.ERROR, is_log_exc=True)
|
|
|
|
|
|
def start_service():
|
|
"""
|
|
控制台服务方式启动。
|
|
"""
|
|
set_logger_config(logger_config_name)
|
|
_ts = init_task_service()
|
|
_ts.start_service(env_check=False)
|
|
|
|
|
|
def start():
|
|
"""
|
|
驻内存服务方式启动。
|
|
"""
|
|
set_logger_config(logger_config_name)
|
|
_ts = init_task_service()
|
|
_ts.start()
|
|
|
|
|
|
def stop():
|
|
"""
|
|
驻内存服务方式停止。
|
|
"""
|
|
set_logger_config(logger_config_name)
|
|
_ts = init_task_service()
|
|
_ts.stop()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) > 1:
|
|
if sys.argv[1] == "start":
|
|
start_service()
|
|
elif sys.argv[1] == "stop":
|
|
stop()
|
|
else:
|
|
print("用法: python service/task_service.py start")
|
|
else:
|
|
start_service()
|