Переменная в Python удаляется после удаления объекта? ⇐ Python

Программы на Python
Anonymous
Переменная в Python удаляется после удаления объекта?

Сообщение Anonymous »

Я новичок в Python. Возможно, мне сможет помочь кто-то более опытный, чем я.
Я пытаюсь удалить пользователя из Okta с помощью вызова API. Чтобы удалить пользователя из Okta, вам нужно дважды выполнить один и тот же запрос DELETE. Первый отключает учетную запись, а второй удаляет ее.
У меня есть две функции: одна для получения идентификатора пользователя с использованием адреса электронной почты, а затем функция для удаления пользователя с использованием идентификатора. .
Если я зайду в Postman и дважды запущу вызов API, это просто сработает. Первый отключает учетную запись, а второй удаляет ее.
Я пытаюсь сделать это на Python следующим образом:

Код: Выделить всё

okta_user = okta.user_search(login)
okta_id = okta_user[0]["id"]
for _ in range(2):
okta.user_delete(okta_id)
Но я получаю такой ответ:

Код: Выделить всё

DEBUG: https://fakeoktaaddress.com:443 "DELETE //api/v1/users/00u7ngjk6u2fkJR7o1d7 HTTP/1.1" 204 0
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/requests/models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "./offboard.py", line 51, in 
okta.user_delete(okta_id)
File "/calls/calls.py", line 151, in user_delete
logging.info(response.json())
^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/requests/models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Как вы можете видеть, первый вызов выполняется отлично и возвращает 204, но второй раз, похоже, завершается неудачей.
Моя теория заключается в том, что каким-то образом при втором запуске Python снова пытается получить значение для okta_id, повторно запустив одну или обе эти функции:

Код: Выделить всё

okta_user = okta.user_search(login)
okta_id = okta_user[0]["id"]
Если это действительно происходит, то okta_user = okta.user_search(login) завершится ошибкой, поскольку вы не сможете выполнить поиск по электронной почте деактивированного пользователя.Может ли быть так, что информация, которую я получил и сохранил в переменной, удаляется после удаления объекта из вызова, который ее создал? Что я делаю не так и как это обойти?
Спасибо!
Попробовал кортеж вместо обычной переменной. Также попробовал глобальную переменную вместо многократно используемой.

Подробнее здесь: https://stackoverflow.com/questions/759 ... ng-deleted

Вернуться в «Python»