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