首页 > 解决方案 > Perforce (P4) Python API 抱怨锁太多

问题描述

我编写了一个打开几个子进程的应用程序,这些子进程分别启动到 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 才能工作,直到几秒钟后错误再次出现

标签: pythonperforce

解决方案


相关代码在这里:

我看不到任何代码路径,其中ticket.lck 文件无法在不引发其他错误的情况下被清理。

门票文件所在的主目录有什么不寻常的地方吗?比如说,它在一个有一些延迟和某种备份过程的网络文件管理器上?或者可能是一个没有正确地在你产生的所有这些子进程之间强制执行文件锁定?

您的脚本多久运行一次“p4 login”来刷新和重写票证?一秒钟多次?如果您将它们更改为不这样做(例如,如果还没有票,则仅登录)问题是否仍然存在?


推荐阅读