代码之家  ›  专栏  ›  技术社区  ›  Radamand

suds Python:权限被拒绝

  •  0
  • Radamand  · 技术社区  · 9 年前

    我有一些代码自去年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,但仍然出现相同的“权限被拒绝”错误。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Heisenberg    9 年前

    suds 在多用户环境中运行。您的用户(正在运行脚本的用户)不能拥有该目录的所有权。也尝试转动 cache 关闭或更改缓存目录。

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

        2
  •  1
  •   Brian Withnell    5 年前

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

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