Python Swift не может установить соединение и поставить объект - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь использовать python swift client для замены существующей команды curl, которая имеет формат:

curl -u "user:password" <url>/<container_name>/<file>

Приведенная выше команда curl работает и не требует дополнительной аутентификации, она подключается к URL-адресу и помещает объект. Я попытался следовать приведенному примеру здесь и написать следующий код

>>> import swiftclient
>>> user = '<user_name>:<password>'
>>> url = '<url>'
>>> conn = swiftclient.Connection(user=user,authurl=url)
>>> container_name='<some_name>'
>>> conn.put_container(container_name)

Но происходит сбой со следующей ошибкой:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 1808, in put_container
    query_string=query_string)
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 1710, in _retry
    self.url, self.token = self.get_auth()
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 1662, in get_auth
    timeout=self.timeout)
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 682, in get_auth
    timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 514, in get_auth_1_0
    conn.request(method, parsed.path, '', headers)
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 444, in request
    files=files, **self.requests_args)
  File "/usr/local/lib/python2.7/dist-packages/swiftclient/client.py", line 427, in _request
    return self.request_session.request(*arg, **kwarg)
  File "/home/adupa/.local/lib/python2.7/site-packages/requests/sessions.py", line 498, in request
    prep = self.prepare_request(req)
  File "/home/adupa/.local/lib/python2.7/site-packages/requests/sessions.py", line 441, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/home/adupa/.local/lib/python2.7/site-packages/requests/models.py", line 310, in prepare
    self.prepare_headers(headers)
  File "/home/adupa/.local/lib/python2.7/site-packages/requests/models.py", line 444, in prepare_headers
    check_header_validity(header)
  File "/home/adupa/.local/lib/python2.7/site-packages/requests/utils.py", line 944, in check_header_validity
    "bytes, not %s" % (name, value, type(value)))
requests.exceptions.InvalidHeader: Value for header {x-auth-key: None} must be of type str or bytes, not <type 'NoneType'>

Есть ли какой-нибудь способ, которым мы можем использовать python swift, чтобы установить соединение только с пользователем и паролем без заголовка или токена авторизации

...