泡沫Python:权限被拒绝

suds Python: Permission denied

我有一些代码自去年 11 月以来一直没有动过,它一直运行良好,直到现在。据我所知,此主机上没有任何其他更改。

错误:

Traceback (most recent call last):
  File "/scm/pvcs/scripts/pyscripts/update_scr_20.py", line 115, in <module>
    updateSCR(SCR, myDeployer, myDeployerID, myEnv, myEnvID, deployTime)
  File "/scm/pvcs/scripts/pyscripts/update_scr_20.py", line 33, in updateSCR
    client = Client(url=SBM_WSDL, location=SBM_ENDPOINT, timeout=180)
  File "build/bdist.linux-x86_64/egg/suds/client.py", line 109, in __init__
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 145, in __init__
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 277, in checkversion
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 251, in clear
OSError: [Errno 13] Permission denied: '/tmp/suds/suds-7962357479995671267-document.px'

我已将文件权限更改为 777,仍然出现相同的 'permission denied' 错误。

在多用户环境中 suds 为 运行 时会出现此错误。您的用户(您正在 运行 编写脚本的用户)不得拥有该目录的所有权。也可以尝试关闭 cache 或更改缓存目录。

您能否分享导致错误的代码部分?您应该捕获异常并查看完整的错误日志。

对于 python soap 客户端而言,这本质上是一个不够完美的设计决策。默认情况下,它在全局 space (/tmp/suds) 中创建一个文件,该文件由单个用户拥有,并阻止其他用户使用 python soap 客户端。如果你 chmod /tmp/suds/* 允许世界访问它将工作(IBM 在他们的 OpenStack 产品中推荐的)......或者在使用客户端后通过删除它留下的垃圾来清理。

soap 客户端应该在用户 space(在 /home/username 下)创建 suds 目录,这样每个用户都会有自己的,或者如果它真的应该是一个全局资源,它应该已使用对文件的开放访问权限。两者都不做,可能会导致许多用户浪费大量时间。我会称之为错误。花费用户时间但很容易修复的东西。