Files
agent_management/scripts/update_template_ports.py
zhanggangyong 33955b68dc fix: 统一 agent 默认端口为 8000(search_agent 系列保持 8080)
- 修改 template_manager.py、k8s_manager.py 中的端口映射
- 更新 jina_search_agent、azure_blob_agent 系列、a2a_litellm_agent 的代码和 Dockerfile 为 8000
- 添加端口修改脚本和测试脚本

Made-with: Cursor
2026-03-02 15:13:07 +00:00

117 lines
3.4 KiB
Python
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
更新数据库中模板的端口。
将 search_agent / search_agent_a2a / search_agent_mcp 的 port 改为 8080,
与容器实际监听端口一致,使 Service target_port 正确。
用法:
# 使用项目 database 配置,仅修改 search_agent* 为 8080
python scripts/update_template_ports.py
# 指定要改的模板和端口
python scripts/update_template_ports.py --names search_agent,search_agent_a2a,search_agent_mcp --port 8080
# 仅打印当前端口,不修改(dry-run)
python scripts/update_template_ports.py --dry-run
"""
import os
import sys
import argparse
# 确保项目根在 path 中
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from database import SessionLocal, Template
# 默认:需要改为 8080 的模板(与 search_agent 镜像一致)
DEFAULT_TEMPLATES_8080 = ["search_agent", "search_agent_a2a", "search_agent_mcp"]
def get_current_ports(db, names):
"""返回 {name: port}"""
rows = db.query(Template).filter(Template.name.in_(names)).all()
return {r.name: r.port for r in rows}
def update_ports(names: list, port: int, dry_run: bool = False):
db = SessionLocal()
try:
current = get_current_ports(db, names)
missing = [n for n in names if n not in current]
if missing:
print(f"未找到模板: {missing}")
names = [n for n in names if n in current]
if not names:
return False
print("当前端口:")
for n in names:
print(f" {n}: {current.get(n)}")
if dry_run:
print("\n[DRY-RUN] 未执行修改。去掉 --dry-run 将执行更新。")
return True
updated = 0
for name in names:
row = db.query(Template).filter(Template.name == name).first()
if row is not None and row.port != port:
row.port = port
updated += 1
print(f" 更新 {name} -> port={port}")
if updated:
db.commit()
print(f"\n已提交: {updated} 条记录 port 已改为 {port}")
else:
print("\n无需更新(端口已是目标值)")
# 再次查询确认
after = get_current_ports(db, names)
print("更新后端口:")
for n in names:
print(f" {n}: {after.get(n)}")
return True
except Exception as e:
db.rollback()
print(f"错误: {e}", file=sys.stderr)
return False
finally:
db.close()
def main():
parser = argparse.ArgumentParser(description="更新模板端口")
parser.add_argument(
"--names",
type=str,
default=",".join(DEFAULT_TEMPLATES_8080),
help="模板名称,逗号分隔,默认: search_agent,search_agent_a2a,search_agent_mcp",
)
parser.add_argument(
"--port",
type=int,
default=8080,
help="目标端口,默认 8080",
)
parser.add_argument(
"--dry-run",
action="store_true",
help="仅打印当前端口,不修改",
)
args = parser.parse_args()
names = [n.strip() for n in args.names.split(",") if n.strip()]
if not names:
print("请至少指定一个模板名 (--names)")
sys.exit(1)
ok = update_ports(names, args.port, dry_run=args.dry_run)
sys.exit(0 if ok else 1)
if __name__ == "__main__":
main()