Проблема с облачной загрузкой в PythonAnywhere: MaxRetryError
Я разрабатываю приложение Django, которое использует Cloudinary для хранения изображений. При локальном запуске проекта все работает нормально, и изображения успешно загружаются.
Однако, когда я развертываю проект на PythonAnywhere, я получаю следующую ошибку при попытке загрузить изображение из панели администратора:
Unexpected error - MaxRetryError("TCPKeepAliveHTTPSConnectionPool(host='api.cloudinary.com', port=443): Max retries exceeded with url: /v1_1/di6geozk1/image/upload (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x748d7df0b520>: Failed to establish a new connection: [Errno 111] Connection refused'))")
Конфигурация в settings.py
:
CLOUDINARY_STORAGE = {
'CLOUD_NAME': env('CLOUDINARY_STORAGE_CLOUD_NAME', default=''),
'API_KEY': env('CLOUDINARY_STORAGE_API_KEY', default=''),
'API_SECRET': env('CLOUDINARY_STORAGE_API_SECRET', default=''),
'SECURE': True,
'API_PROXY': 'http://proxy.server:3128'
}
### Things I've already checked:
- The credentials (CLOUD_NAME, API_KEY, API_SECRET) are correctly set.
- In my local environment, images upload successfully to Cloudinary.
- In PythonAnywhere, the connection is refused.
- I tried removing the 'API_PROXY' setting, but the error persists.
Я нашел это на форумах Pythonanywhere: https://www.pythonanywhere.com/forums/topic/13776/#id_post_105423
Это должно устранить проблему
В целях безопасности доступ в Интернет для учетных записей Pythonanywhere free осуществляется через прокси-сервер "allowlist"; они могут получать доступ только к сайтам, которые есть в этом списке. Cloudinary находится в этом списке (смотрите список сайтов, разрешенных в настоящее время.)
Ошибка [Errno 111] отказано в подключении, которую вы получаете, указывает на то, что либо Cloudinary не поддерживает использование прокси-сервера, либо его необходимо настроить для использования прокси-сервера. Взгляните на их документы, чтобы определить, что это такое, и подумайте о том, чтобы обсудить с проектом поддержку прокси-сервера.
Также проверьте свою конфигурацию Cloudinary, чтобы убедиться, что она включает правильные настройки прокси-сервера. Обратите внимание, что у платных пользователей нет этого ограничения. Смотрите https://help.pythonanywhere.com/pages/403ForbiddenError/#proxy-details
ПРИМЕЧАНИЕ: Вы можете разрешить PythonAnywhere обслуживать медиафайлы для вас. Для этого:
в вашем settings.py задайте для
MEDIA_ROOT
какой-нибудь путь (например,/home/yourusername/yourproject/media
), а дляMEDIA_URL
-/media/
(или любой другой URL, который вы хотите)на вкладке веб-приложения прокрутите вниз до раздела
Static files
и убедитесь, что там есть строка с вашимMEDIA_URL
и путем, который вы указали дляMEDIA_ROOT
.перезапустите ваше веб-приложение, и весь загруженный пользователем контент будет отображаться корректно.