Проблема с облачной загрузкой в 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.

  • перезапустите ваше веб-приложение, и весь загруженный пользователем контент будет отображаться корректно.

Вернуться на верх