初始化项目

This commit is contained in:
zwf
2026-06-02 17:46:38 +08:00
commit 646a4d02c0
240 changed files with 33662 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
"""
系统服务,用于读取服务配置文件,启动或停止相关的服务。
"""
import logging
import os
import sys
from typing import Optional
from dock.dcm import dcm_scrape, dcm_security
from dock.oa_dcm import oa_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.dcm_service'
"""
配置文件中日志配置字段名称。
"""
task_serv: Optional[TaskService] = None
"""
任务服务对象。
"""
pid_file = os.path.join(os.path.curdir, 'dcm_service.pid')
"""
PID 文件路径。
"""
service_name = '数字城管计划任务服务'
"""
服务名称。
"""
def init_task_service():
"""
初始化服务对象并安装具体任务。
"""
global task_serv
task_serv = TaskService(service_name=service_name, pid_file=pid_file)
# 每隔 2 小时执行,更新数字城管 Cookies
task_serv.add_task(creator=task_serv.create_delay_task, fn=renew_dcm_token, delay=3600 * 2)
# 每隔 2 小时执行,抓取 DCM 数据
task_serv.add_task(creator=task_serv.create_delay_task, fn=scrape_dcm_task, delay=3600 * 2)
return task_serv
async def renew_dcm_token():
try:
echo_log(f"开始执行数字城管 Cookies 更新...")
await dcm_security.login()
echo_log(f"完成数字城管 Cookies 更新.")
except Exception as e:
echo_log(msg=e, level=logging.ERROR, is_log_exc=True)
async def scrape_dcm_task():
fetch_size = 30
try:
echo_log(f"开始执行 DCM<=>OA 数据同步...")
await dcm_scrape.fetch_dcm_task(fetch_size)
# 工单推送 OA 平台
await oa_push_order.push_full_order(fetch_size)
# 推送结束后,签收工单
await oa_sign_task.sign_task(fetch_size)
echo_log(f"执行 DCM<=>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()