服务配置组件
服务配置组件用于设置和管理应用服务的相关参数,如端口、主机地址等。
服务端口配置
基本用法
python
gui_config.add_menu("服务设置", "是一个启动服务的设置")
gui_config.add_argument(
"port",
metavar="服务端口",
help="输入启动服务的端口",
type=int,
default=8080,
widget="IntegerField",
gooey_options={
"min": 0, # 最小值
"max": 10000, # 最大值
"step": 1, # 步长
"stepStrictly": False, # 是否只能输入步长的倍数
"controls": True, # 是否显示控制按钮
"controlsPosition": "right", # 控制按钮位置
"placeholder": "请输入整数", # 占位文本
"size": "large"
}
)
服务启动示例
在后端启动服务时,可以使用用户配置的端口:
python
def RunMain(self, dict_data=None):
"""
运行主函数入口
:param dict_data: 前端传来的参数字典
:return:
"""
# 解析参数执行具体任务
if dict_data["menuName"] == "服务设置":
# 获取用户配置的端口
port = dict_data["formData"]["port"]
# 启动服务
Sh_Serve = Server(
port=port, # 使用用户配置的端口
host='0.0.0.0',
dict_data=dict_data,
RunCode=self
)
Sh_Serve.run(dict_data) # 启动WEB服务
完整服务配置示例
以下是一个更完整的服务配置示例,包含多个服务参数:
python
# 添加服务配置菜单
gui_config.add_menu("服务配置", "配置服务器相关参数")
# 添加服务分组
gui_config.add_argument_group("基本设置", gooey_options={"show_border": True})
# 端口配置
gui_config.add_argument(
"port",
metavar="服务端口",
help="输入服务器监听端口",
type=int,
default=8080,
widget="IntegerField",
gooey_options={
"min": 1024,
"max": 65535,
"step": 1,
"controls": True,
"placeholder": "请输入端口号",
"size": "large"
}
)
# 主机地址配置
gui_config.add_argument(
"host",
metavar="主机地址",
help="输入服务器绑定地址",
default="0.0.0.0",
widget="TextField",
gooey_options={
"placeholder": "输入主机地址,如0.0.0.0或127.0.0.1",
"size": "large"
}
)
# 启用HTTPS
gui_config.add_argument(
"use_https",
metavar="启用HTTPS",
help="是否使用HTTPS协议",
default=False,
widget="SwitchField",
gooey_options={
"activeText": "启用",
"inactiveText": "禁用",
"size": "large"
}
)
# 高级设置分组
gui_config.add_argument_group("高级设置", gooey_options={"show_border": True})
# 线程数配置
gui_config.add_argument(
"threads",
metavar="线程数",
help="服务器工作线程数",
type=int,
default=4,
widget="IntegerField",
gooey_options={
"min": 1,
"max": 32,
"step": 1,
"controls": True,
"size": "large"
}
)
# 超时设置
gui_config.add_argument(
"timeout",
metavar="请求超时(秒)",
help="请求超时时间",
type=int,
default=30,
widget="IntegerField",
gooey_options={
"min": 5,
"max": 300,
"step": 5,
"controls": True,
"size": "large"
}
)
服务管理
服务配置完成后,通常需要提供服务管理功能,如启动、停止、重启服务等。这些功能可以在后端实现并暴露给前端调用。
服务状态维护
python
class ServerManager:
def __init__(self):
self.server = None
self.server_status = "stopped" # 初始状态为停止
def start_server(self, port, host, use_https=False, threads=4, timeout=30):
"""启动服务"""
if self.server_status == "running":
return {"status": "error", "message": "服务已在运行中"}
try:
# 启动服务的代码
self.server = Server(
port=port,
host=host,
use_https=use_https,
threads=threads,
timeout=timeout
)
self.server.run()
self.server_status = "running"
return {"status": "success", "message": f"服务已启动在 {host}:{port}"}
except Exception as e:
return {"status": "error", "message": f"服务启动失败: {str(e)}"}
def stop_server(self):
"""停止服务"""
if self.server_status != "running":
return {"status": "error", "message": "服务未运行"}
try:
# 停止服务的代码
self.server.stop()
self.server_status = "stopped"
return {"status": "success", "message": "服务已停止"}
except Exception as e:
return {"status": "error", "message": f"服务停止失败: {str(e)}"}
def restart_server(self, port, host, use_https=False, threads=4, timeout=30):
"""重启服务"""
stop_result = self.stop_server()
if stop_result["status"] == "error" and "服务未运行" not in stop_result["message"]:
return stop_result
# 短暂延迟确保端口释放
import time
time.sleep(1)
return self.start_server(port, host, use_https, threads, timeout)
最佳实践
- 默认值设置:为服务配置提供合理的默认值,特别是端口号应当避免与常用端口冲突
- 参数验证:在接收用户输入的服务参数时,应进行有效性验证
- 错误处理:在服务启动和管理过程中,加入完善的错误处理和日志记录
- 用户反馈:提供明确的服务状态反馈,如服务是否成功启动、当前运行状态等
- 安全考虑:对于敏感配置,如数据库连接参数,应考虑加密存储和显示