Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perforce(P4)pythonapi抱怨锁太多_Python_Perforce - Fatal编程技术网

Perforce(P4)pythonapi抱怨锁太多

Perforce(P4)pythonapi抱怨锁太多,python,perforce,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",

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

相关代码如下:

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

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


您的脚本多久运行一次“p4登录”来刷新和重新写入票据?一秒钟很多次?如果您将他们更改为不这样做(例如,只有在没有票证的情况下才登录),问题是否仍然存在?

您是我的英雄!在每个连接上(数百次),它执行
run\u login
+
connect
,这显然是不必要的!非常感谢!如果存在某种竞争条件,我也不会感到惊讶(尽管理论上可能是本地文件锁阻止了竞争,并且这里存在
flock()
问题);在“正常”使用情况下,客户端根本不运行并发的
login
命令,更不用说写操作的速度快到可以并发进行了。对于其他阅读本文的人来说。。我以相同的连接方法执行了p4.run_login和p4.connect。仅使用凭据调用
connect
即可