Perforce(P4)Python API抱怨锁太多

时间:2018-12-19 03:03:55

标签: python perforce

我编写了一个应用程序,该应用程序打开了几个子进程,这些子进程分别启动与Perforce服务器的连接。一段时间后,我在几乎所有这些子进程中都收到此错误消息:

Traceback (most recent call last):
File "/Users/peter/Desktop/test_app/main.py", line 76, in p4_execute
    p4.run_login()
File "/usr/local/lib/python3.7/site-packages/P4.py", line 665, in run_login
    return self.run("login", *args, **kargs)
File "/usr/local/lib/python3.7/site-packages/P4.py", line 611, in run
    raise e
File "/usr/local/lib/python3.7/site-packages/P4.py", line 605, in run
    result = P4API.P4Adapter.run(self, *flatArgs)
P4.P4Exception: [P4#run] Errors during command execution( "p4 login" )

    [Error]: "Fatal client error; disconnecting!
            Operation 'client-SetPassword' failed.
            Too many trys to get lock /Users/peter/.p4tickets.lck."

有人知道是什么原因造成的吗?我正确打开了连接,并仔细检查了通过disconnect与服务器断开连接的所有源位置。

只有手动删除.p4tickets.lck才能起作用,直到几秒钟后错误再次出现

1 个答案:

答案 0 :(得分:3)

相关代码在这里:

我看不到有任何代码路径,在没有抛出其他错误的情况下,ticket.lck文件将无法清除。

票证文件所在的主目录是否存在异常?例如,它在具有某些延迟和某种备份过程的网络文件服务器上?还是在您产生的所有这些子进程之间无法正确执行文件锁定?

您的脚本多久运行一次“ p4登录”来刷新和重写票证?一秒钟很多次?如果您将其更改为不执行此操作(例如,仅在没有票证的情况下登录),问题是否仍然存在?