我有一个bot,允许用户向一个图像发送一个URL,然后下载该图像,但是我的日志文件中不断出现UnicodeError: encoding with 'idna' codec failed
错误。我自己还不能重现这个错误。你知道吗
以下是完整的错误消息:
Traceback (most recent call last):
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/telegram/utils/promise.py", line 57, in run
self._result = self.pooled_function(*self.args, **self.kwargs)
File "ezstickerbot.py", line 183, in url_received
request = requests.get(url, timeout=3)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
conn.connect()
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/connection.py", line 334, in connect
conn = self._new_conn()
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/connection.py", line 157, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "/home/fenicbot/virtualenv/ez-sticker-bot/3.7/lib/python3.7/site-packages/urllib3/util/connection.py", line 61, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "/opt/alt/python37/lib64/python3.7/socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
UnicodeError: encoding with 'idna' codec failed (UnicodeError: label empty or too long)
以下是错误产生的代码段:
def url_received(update: Update, context: CallbackContext):
message = update.message
text = message.text.split(' ')
if len(text) > 1:
message.reply_text(get_message(message.chat_id, "too_many_urls"))
return
text = text[0]
url = urlparse(text, 'https').geturl()
# remove extra backslash after https if it exists
if url.lower().startswith("https:///"):
url = url.replace("https:///", "https://", 1)
# get request
try:
request = requests.get(url, timeout=3)
request.raise_for_status()
except InvalidURL:
message.reply_markdown(get_message(message.chat_id, "invalid_url").format(url))
return
except HTTPError:
message.reply_markdown(get_message(message.chat_id, "url_does_not_exist").format(url))
return
except Timeout or ConnectTimeout:
message.reply_markdown(get_message(message.chat_id, "url_timeout").format(url))
return
except ConnectionError or RequestException or UnicodeError:
message.reply_markdown(get_message(message.chat_id, "unable_to_connect").format(url))
return
我也从同一行得到一个UnicodeError: label empty or too long
错误。你知道吗
如果有人知道是什么导致了这个错误,我可以如何修复它的帮助将不胜感激。如果是因为用户发送了乱七八糟的网址,我只需要知道他们是怎么乱七八糟的,我可以抓住错误,并向他们发送一条消息,告诉他们哪里出错了。谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐