suds Python: в доступе отказано

У меня есть некоторый код, который не тронут с ноября прошлого года, он работал нормально все это время, до сих пор. Насколько я знаю, больше ничего не изменилось на этом хосте.

Ошибка:

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, но получаю ту же ошибку "Отказано в доступе".

1 ответ

Решение

Эта ошибка возникает, когда suds работает в многопользовательской среде. Ваш пользователь (используя которого вы запускаете скрипт) не должен иметь права собственности на этот каталог. Также попробуйте включить cache выключить или изменить каталог кэша.

Можете ли вы поделиться своей частью кода, которая вызывает ошибку.? Вы должны поймать исключение и увидеть полный журнал ошибок.

По сути, это не идеальное дизайнерское решение со стороны клиента мыла на Python. По умолчанию он создает файл в глобальном пространстве (/tmp/suds), который принадлежит одному пользователю и который блокирует других пользователей от использования клиента мыла python. Если вы выполните команду chmod /tmp/suds/*, чтобы разрешить миру доступ, он будет работать (что IBM рекомендует в своем продукте OpenStack) ... или очистить после использования клиента, удалив мусор, который он оставляет.

Клиент мыла должен был создать каталог suds в пользовательском пространстве (в / home / username), чтобы у каждого пользователя был свой собственный, или, если это действительно должен быть глобальный ресурс, он должен был использовать открытый доступ к файлу. В противном случае это, вероятно, привело к потере времени у многих пользователей. Я бы назвал это ошибкой. То, что отнимает у пользователей время и легко исправляется.

Другие вопросы по тегам