初始化询价智能体新仓:同步本地工程并排除密钥与 .env。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
"""
|
||||
智能体唯一 Worker 入口(LLM / 识别 / 报价 PDF / 存档)。
|
||||
|
||||
本文件职责:组装分槽运行时并阻塞至进程结束;不在此写各业务 Handler。
|
||||
禁止:Redis wecom:worker:singleton;禁止五进程拆分;禁止在 HTTP 回调里跑本模块逻辑。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import signal
|
||||
import threading
|
||||
|
||||
from agent.config import get_settings
|
||||
from agent.jobs import WorkerRuntime
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""
|
||||
启动 Worker 槽与 inbox/outbox 占位线程,主线程等待停止信号。
|
||||
|
||||
副作用:创建后台线程;骨架不消费真实队列、不连库。
|
||||
并发:LibreOffice 1 槽;HTTP 类至少 2~3 槽;与 inbox/outbox 隔离。
|
||||
"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s %(levelname)s [%(name)s] %(message)s",
|
||||
)
|
||||
settings = get_settings()
|
||||
runtime = WorkerRuntime.from_settings(
|
||||
libreoffice_slots=settings.libreoffice_slots,
|
||||
http_job_slots=settings.http_job_slots,
|
||||
)
|
||||
runtime.start()
|
||||
|
||||
stop_event = threading.Event()
|
||||
|
||||
def _handle_signal(signum: int, _frame: object) -> None:
|
||||
logger.info("收到停止信号 signum=%s", signum)
|
||||
runtime.stop()
|
||||
stop_event.set()
|
||||
|
||||
signal.signal(signal.SIGINT, _handle_signal)
|
||||
signal.signal(signal.SIGTERM, _handle_signal)
|
||||
|
||||
logger.info("Worker 骨架运行中 ytd_env=%s(Ctrl+C 退出)", settings.ytd_env)
|
||||
stop_event.wait()
|
||||
logger.info("Worker 已退出")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user