Skip to content

7.Launcher

JianJun edited this page Oct 31, 2024 · 1 revision

ChatRoom Launcher

使用 ChatRoom Launcher 启动 User 进程, 相当与 LauncherUser 的父进程.

Launcher 的功能为控制 User 子进程的启动, 停止, 重启, 可根据配置的时间参数或者手动输入命令控制 User 子进程的启动停止等行为.

也可以让 Room 远程控制 User 重启.

"""
文档:
    Launcher 启动器, 用于启动 ChatRoom 子程序.

参数:
    cmdline : str
        子进程命令行
    config : list
        启动器配置, 参考文档
    check_alive : bool (default True)
        是否启用检查子进程存活功能
    check_sleep_interval : int (default 3)
        检查子进程存活时间间隔
    check_max_retries : int (default 3)
        检查子进程异常结束后重试重启次数
    check_max_err_times : int (default 5)
        最大检测错误次数
    shell : bool (default False)
        是否使用终端启动子进程, Window 默认为 False, 其余系统默认为 True
            非 Windows 系统不设置为 True, Launcher 会因为找不到可执行文件而启动失败
"""

示例

User 代码

# client.py
from ChatRoom import User
user = User(
        user_name="Bar",
)

client_demo = user.package_manage.get_client("Foo", "demo")

while True:
    try:
        user_command = input("command:")
        if user_command == "1":
            client_demo.fun1()
        elif user_command == "2":
            client_demo.fun2("Hello!")
        elif user_command == "3":
            print(client_demo.fun3())
        elif user_command == "4":
            client_demo.fun4(1, 2)
    except KeyboardInterrupt:
        pass

Launcher 代码

# launcher.py
from datetime import datetime
from ChatRoom import Launcher

# 配置自动启动时间等
config = [
    # 每日 8:45 进行重启
    {
        "cmd" : "restart",
        "hour" : 8,
        "minute" : 45,
        "second" : 0,
    },

    # 每日 20:45 随机秒数 进行重启, 只有 second 可以使用 "random" 这个参数
    {
        "cmd" : "restart",
        "hour" : 20,
        "minute" : 45,
        "second" : "random",
    },

    # 在 datetime(2023, 2, 27, 12, 5) 停止
    {
        "cmd" : "stop",
        "date" : datetime(2023, 2, 27, 12, 5),
    },
]

lancher = Launcher(
    cmdline = "python test_tmp.py",
    config = config,
)

lancher.run()

使用 Python launcher.py 就可以启动 Launcher 进程, Launcher 进程会根据设置的命令行参数 "python test_tmp.py" 启动 User 子进程.

Launcher 的标准输入默认输入到 User子进程中, 所以可以使用键盘键入 1, 2, 3, 4 根据 client.py 的设计控制子进程的行为.

配置运行时间

参考上面例子 Launcher 对象接收一个 config 参数配置子进程的启动, 停止, 重启, 其中 cmd 参数可以为:

  • start: 启动
  • stop: 停止
  • restart: 重启

可以像上面的代码那样输入多个配置, 如果配置了 "random" 参数的时候, 每个配置的时间最好间隔两分钟以上, 防止因为 "random" 随机导致的子进程重复启动等错误!

系统命令

输入 lhelp 或者 lh 可以查看 Launcher 的系统命令帮助说明

lquit

停止 User 子进程和 Launcher 主进程并结束程序

lconfig(lc)

查看 Launcher 的 config 配置信息

lstart

启动 User 子程序

lstop

停止 User 子程序

lrestart

重启 User 子程序

lhelp(lh)

显示 Launcher 帮助

Clone this wiki locally