170 похожих чатов

Покопавшись в теме, выяснил: 1) Реализовывать это в __del__(self) неправильно. Никто

не гарантирует, что глобальные объекты будут еще живы в момент запуска деструктора класса. Нужно использовать Context Manager.
2) При запуске деструктора первыми удаляются глобальные объекты и объекты с underscore в начале имени (https://pythonz.net/references/named/object.__del__/). В библиотеке ssl.py SSLContext обозначается как _SSLContext. Есть вероятность. что он уже удалился к моменту выполенения __del__(self)моего класса.

Коллеги, подскажите, как правильно решить эту проблему?
Context Manager не смогу использовать. Или не могу придумать, как использовать его правильно.

7 ответов

20 просмотров

Так а что решать?

Alexander-Fomin Автор вопроса
std::mpa 🇺🇦
Так а что решать?

Как можно без использования контекстного менеджера выполнить корректное завершение соединения? Или можно ли управлять или повлиять на порядок удаления объектов? Если я делаю: with WebApiStub as sdk: sdk.create() То в конце вызывается описанный в классе метод def exit, в котором все мои request успешно выполняются. Но в рабочем варианте я делаю # flask_app.py class FlaskApp: def __init__(self, bot, sdk): self.app = Flask(__name__) self.sdk = WebApiStub().create() self.TOKEN = self.bot.get_token() self.sdk = sdk Как тут можно использовать Context Manager?

Alexander-Fomin Автор вопроса
std::mpa 🇺🇦
__enter__ и __exit__ методы описать..?

так они же вызываются только при использовании контектсного менеджера?

Alexander Fomin
Как можно без использования контекстного менеджера...

если хочешь без контекстного менеджера можешь try: except использовать где в finally закроешь конект

Alexander Fomin
Как можно без использования контекстного менеджера...

а если не хочешь контекстный менеджер, то обычно делают: try: do_something() finally: cleanup()

Alexander-Fomin Автор вопроса
std::mpa 🇺🇦
а если не хочешь контекстный менеджер, то обычно д...

Да, согласен. Только не могу понять, где нужно блок try-except-finally использовать? Есть __init, в нем я создал sdk. Дальше у меня есть Flask app. Его я запускаю в wsgi.py: if name == "__main__": # Create Flask app app.run() Все. Дальше у меня идет работа Flask. Когда я останавливаю работу Flask, удаление идет следующим чередом (прописал в```__del``` каждого используемого класса логирование): 1. Delete SSL... (это класс SSLConfig, в нем я подгружаю SSLContext params (пароли, сертификаты и тд)) 2. Delete SDK.... (пытается удалиться экземпляр SDK, получаю SSLError). 3. Delete Flask app...

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Карта сайта