mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-11 00:06:04 +00:00
feat: 持久化和 web 接口基础架构
This commit is contained in:
@@ -17,11 +17,18 @@ from ..plugin import manager as plugin_mgr
|
||||
from ..pipeline import pool
|
||||
from ..pipeline import controller, stagemgr
|
||||
from ..utils import version as version_mgr, proxy as proxy_mgr, announce as announce_mgr
|
||||
from ..persistence import mgr as persistencemgr
|
||||
from ..api.http.controller import main as http_controller
|
||||
from ..utils import logcache
|
||||
|
||||
|
||||
class Application:
|
||||
"""运行时应用对象和上下文"""
|
||||
|
||||
event_loop: asyncio.AbstractEventLoop = None
|
||||
|
||||
asyncio_tasks: list[asyncio.Task] = []
|
||||
|
||||
platform_mgr: im_mgr.PlatformManager = None
|
||||
|
||||
cmd_mgr: cmdmgr.CommandManager = None
|
||||
@@ -78,6 +85,12 @@ class Application:
|
||||
|
||||
logger: logging.Logger = None
|
||||
|
||||
persistence_mgr: persistencemgr.PersistenceManager = None
|
||||
|
||||
http_ctrl: http_controller.HTTPController = None
|
||||
|
||||
log_cache: logcache.LogCache = None
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@@ -91,13 +104,21 @@ class Application:
|
||||
|
||||
try:
|
||||
|
||||
# 后续可能会允许动态重启其他任务
|
||||
# 故为了防止程序在非 Ctrl-C 情况下退出,这里创建一个不会结束的协程
|
||||
async def never_ending():
|
||||
while True:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
tasks = [
|
||||
asyncio.create_task(self.platform_mgr.run()),
|
||||
asyncio.create_task(self.ctrl.run())
|
||||
asyncio.create_task(self.platform_mgr.run()), # 消息平台
|
||||
asyncio.create_task(self.ctrl.run()), # 消息处理循环
|
||||
asyncio.create_task(self.http_ctrl.run()), # http 接口服务
|
||||
asyncio.create_task(never_ending())
|
||||
]
|
||||
self.asyncio_tasks.extend(tasks)
|
||||
|
||||
# 挂信号处理
|
||||
|
||||
# 挂系统信号处理
|
||||
import signal
|
||||
|
||||
def signal_handler(sig, frame):
|
||||
@@ -109,7 +130,6 @@ class Application:
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
await asyncio.gather(*tasks, return_exceptions=True)
|
||||
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user