Устранение неполадок при запуске API из Flask с использованием Apache и Mod-WSGI - PullRequest
0 голосов
/ 26 мая 2019

Я работаю над приложением Flask, которое размещено на сервере Ubuntu 16.04 под управлением Apache. Приложение использует Google Earth Engine (GEE).

GEE сохраняет токены и загружает токены из ~/.config/earthengine/credentials по умолчанию. Хотя это не создает никаких проблем при совершении вызовов python -c в GEE, GEE не может получить доступ к токену из Flask и, следовательно, не запускается.

То есть, когда вызывается в моем приложении Flask, GEE вызывает исключение. Я проследил это исключение обратно через мой apache error_log, и я считаю, что это корень проблемы:

[wsgi:error] tokens = json.load(open(oauth.get_credentials_path())
[wsgi:error] FileNotFoundError: [Errno 2] No such file or directory: 
   'var/www/.config/earthengine/credentials'

Я попытался слегка изменить путь к файлу учетных данных по умолчанию в earthengine/oauth.py на '. /.config/earthengine/credentials'. После этого я все еще мог совершать python -c звонки в GEE, но мне не повезло с Flask.

Я подумал о том, чтобы просто создать какую-то папку специально для использования GEE в контексте моего приложения Flask и затем указать на нее earthengine/oauth.py. Однако я очень осторожен в этом.

На данный момент я понятия не имею, является ли это проблемой с Flask, проблемой Ubuntu, проблемой WSGI или чем-то другим, поэтому любые предложения помогут.

Вообще говоря, есть два вопроса, которые, по моему мнению, должны помочь мне приблизиться к решению: (1) как я могу разрешить oauth-скрипту доступ к ~ / .config в Ubuntu? и (2) как правильно указать apache на ~ / .config в качестве домашнего каталога, т. е. какой файл .conf следует изменить, чтобы попытаться решить эту проблему?


Редактировать: Прочитав некоторые проблемы с mod-wsgi , я думаю, что есть вероятность, что это как-то связано с WSGIPassAuthorization. Если так, что именно я должен сделать?

Обновление: Я изменил права доступа к файлу, как предложено здесь , и я изменил файл, на который указывает oauth.py, '/root/.config/earthengine/credentials'. Хорошая новость: я больше не получаю сообщение об ошибке при доступе к файлу. Плохая новость: теперь я получаю сообщение об ошибке из-за якобы неверного маркера обновления. Я видел, что это может быть проблема с часами , но мои часы выглядят хорошо для меня:

  Local time: Sun 2019-05-26 17:11:12 UTC
  Universal time: Sun 2019-05-26 17:11:12 UTC
  RTC time: Sun 2019-05-26 17:11:12
  Time zone: Etc/UTC (UTC, +0000)
  Network time on: yes
  NTP synchronized: yes
  RTC in local TZ: no

(Часы смотрятся отлично, когда я смотрю на ntpd -c lpeer output.)

В этом свете я могу заметить, что когда я earthengine authenticate значение токена в моем файле учетных данных не изменяется. Это не , кажется, препятствует моему локальному использованию глинозема, но использование в Flask все еще остается проблемой.

Обновление: Теперь я считаю, что это результат попыток совершать звонки без учетной записи службы Google.

...