32 浏览
0

控制台打印的天勤webgui端口号会被我后续代码的清屏给清除掉,这个时候怎么找webgui的端口,或者有什么函数可以获取端口号?不想用固定的端口,因为会运行多个策略,端口会冲突,不想取消清屏。是不是只有先手动把端口号记录下来之后,再清屏了?-_-||

chaos 已回答的问题 12小时 前
1

web_gui=True 随机生成的端口目前没有公开接口可以再次获取,地址只会输出到控制台。

如果需要清屏后重新显示地址,可以把“选择随机端口”这一步提前到程序中:

1. 使用 Python 的 socket 创建一个临时套接字。
2. 绑定本机地址 127.0.0.1 和端口 0,让操作系统分配一个当前空闲端口。
3. 通过 getsockname()[1] 取得端口号并保存在 web_port 变量中,然后关闭临时套接字。
4. 将 127.0.0.1 和 web_port 组成的地址传给 TqApi 的 web_gui 参数,同时把对应的 HTTP 地址保存在 web_url 变量中。

这样端口仍然是动态选择的,但程序已经提前记住了实际地址。清屏后重新输出 web_url 即可。多个策略分别执行这套逻辑,通常会取得不同的空闲端口;严格并发启动时仍有很小的端口竞争可能,可以在绑定失败时重新选择端口。

chaos 发表新评论 12小时 前

有其他问题欢迎加入官方Q群748265037一起交流