Как исправить ошибку 429?
День добрый.
Сталкивался ли кто-то с такой проблемой на сайте https://www.pythonanywhere.com/ при деплое своего кода? Я пытаюсь скачать видео с Youtube посредством библиотеки youtube_dl и отправить его пользователю. Я прекрасно понимаю, что ошибка связана с большим количеством запросов на сервер. Запуск кода на локальной машине ошибок не вызывает и видео успешно скачивается, а вот на сервисе - беда.
Я смотрел решение проблемы в интернете, и там к запросу добавляли заголовок что-то вроде:
requests.get(link, headers={'User-agent': 'your bot 0.1'}), но это не решает мою проблему. Также пытался установить задержку, и это тоже не помогло.
Мне кажется, что проблема заключается в самом скачивании самого видео на сервере pythonanywhere, либо из-за того, что у меня нет прав на его скачивание в директорию.
Приведу ту часть кода, где происходит ошибка:
def download(title, link):
ydl_opts = {
'outtmpl': '{}.%(ext)s'.format(title),
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '320',
}]
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([link]) # ошибка появляется здесь исходя из отладчика
return {
'audio':open(title + '.mp3', 'rb'),
'title':title,
}
А это вывод ошибки из терминала:
Traceback (most recent call last):
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/YoutubeDL.py", line 797, in extract_info
ie_result = ie.extract(url)
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/extractor/common.py", line 532, in extract
ie_result = self._real_extract(url)
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/extractor/youtube.py", line 1798, in _real_extract
video_webpage, urlh = self._download_webpage_handle(url, video_id)
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/extractor/youtube.py", line 276, in
_download_webpage_handle
return super(YoutubeBaseInfoExtractor, self)._download_webpage_handle(
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/extractor/common.py", line 665, in _download_webpage_handle
urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
File "/home/DeN/.local/lib/python3.8/site-packages/youtube_dl/extractor/common.py", line 650, in _request_webpage
raise ExtractorError(errmsg, sys.exc_info()[2], cause=err)
youtube_dl.utils.ExtractorError: Unable to download webpage: HTTP Error 429: Too Many Requests (caused by <HTTPError 429: 'Too Many Requests'>); please report this iss
ue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-
dl.org/update on how to update. Be sure to call youtube-dl with the --verbos
e flag and include its complete output.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/DeN/.local/lib/python3.8/site-packages/telebot/util.py", line 69, in run
task(*args, **kwargs)
File "bot_ts.py", line 62, in music
music_dict = DownloadMusic.download(title, video_url)
File "bot_ts.py", line 49, in download
ydl.download([link])