Экспериментирую с ботами Telegram. Я создал простой класс для отправки сообщений и хочу, чтобы он отправлял мне предупреждающее сообщение при удалении объекта TelegramBot
. Мой код:
import requests
class TelegramBot:
def __init__(self, token, id):
self.token = token
self.id = id
def send_msg(self, msg: str):
send_text = 'https://api.telegram.org/bot' + self.token + '/sendMessage?chat_id=' + self.id + '&parse_mode=Markdown&text=' + msg
response = requests.get(send_text)
return response.json()
def __del__(self):
self.send_msg('WARNING: TelegramBot object is being deleted')
, и он отлично работает. Проблема в методе __del__
. Вместо отправки сообщения с предупреждением я получаю сообщение об ошибке:
Exception ignored in: <function TelegramBot.__del__ at 0x7f1927c74280>
Traceback (most recent call last):
File "check_flight_status.py", line 20, in __del__
File "check_flight_status.py", line 16, in send_msg
File "/usr/lib/python3/dist-packages/requests/api.py", line 75, in get
File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 376, in _make_request
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 996, in _validate_conn
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 319, in connect
ImportError: sys.meta_path is None, Python is likely shutting down
, и я считаю, что это связано с тем фактом, что пакет requests
«уничтожается» перед объектом TelegramBot
.
Итак, как я могу отправить сообщение при удалении объекта?