Устранение неполадок при запуске API из Flask с использованием Apache и Mod-WSGI

Я работаю над приложением 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.

0 ответов

У меня такая же проблема. У меня есть рабочая учетная запись службы Google. Это подтвердил Google. Кроме того, все работает нормально, когда я запускаю приложение flask локально. У него проблемы с просмотром privatekey.json только тогда, когда я запускаю приложение flask через сервер apache.

Другие вопросы по тегам