我已经在使用 P4V 客户端,一切都很好,没有连接错误。
错误: 当我尝试从 Python 执行 p4 命令时出现一些 SSL 错误。而且是随机的,如果我重新运行脚本,每次都不会抛出错误
从客户端,输出是:
SSL 接收失败。\n读取: 操作成功: WSAECONNRESET
从服务器端日志,我得到:
来自 90.XX.XX.93:53929 的连接中断。SSL 接收失败。读取:对等方重置连接:对等方重置连接
在 le P4 Connection with 之后p4.connect(),我运行一个p4.run_trust()命令,结果似乎还可以
信任已经建立
这个错误是在做一个p4 fetch, 的p4 edit myfile
配置
我正在从运行 P4V 客户端的同一台计算机上启动我的 python 脚本。我正在使用相同的配置(用户、工作区、url+port > ssl:p4.our-url.domain:1666)。无论是否启动 P4V 客户端,都会发生 SSL 错误。SSL 证书是在 Perforce Server 安装和配置期间生成的。我们的子域 p4.our-domain 后面没有 apache 服务器,所以我无法使用在线 SSL 检查器测试 SSL 证书(我的网络知识在那里达到了极限)
当我这样做时,p4 info有一个“对等地址”,基本上是我的 IP 和一个随机生成的端口(53929)。这个端口是什么?我需要设置固定端口并重定向到运行脚本的计算机吗?
您有任何想法该错误来自哪里吗?这是一个糟糕的服务器配置吗(奇怪的原因是办公室里的每个 p4v 客户端都可以工作)。我是否需要为 P4Python 脚本的所有用户建立和分发新证书?
Python 3.5.4
PyOpenssl 18.0.0
P4Python 2017.2.1615960
非常感谢您的任何建议。
山姆斯塔福德建议的答案
山姆是对的,看来我超时了。我在脚本启动时打开 P4 连接并连接到服务器,然后在使用 p4 fetch/add/submit 之前启动处理以生成文件。这是在与服务器断开连接时重新连接的解决方法
# self.myp4 = P4() was created on init, files are added
submited = False
maxTry = 5
while not submited and maxTry > 0:
try:
reslist = self.p4.run_submit(ch)
except P4Exception as p4e:
print(str(self.p4.errors))
self.myp4.disconnect()
maxTry -= 1
self.myp4.connect()
submited = reslist is not None and len(reslist) > 0
如果您想保持连接打开,这很有效。我想避免超时的最好P4.connect()方法是在 any 之前调用方法P4.run_*method*()并在之后关闭它。而不是等待超时重新启动连接。