Внутренняя ошибка сервера при использовании apache2 и google-cloud-storage - PullRequest
0 голосов
/ 07 ноября 2019

Так что мне удалось все подключить. Путь к Google и настройка apache2, кажется, работают хорошо. Однако я получаю внутреннюю ошибку; / внутри сервера. В функции hello

storage_client= storage.Client() приводит к ошибке

в тесте функции

storage_client= storage.Client() приводит к успеху, и python смог найти secret.json, что странно для меня ..



#__init__.py code
from flask import Flask
from google.cloud import storage

app = Flask(__name__)

@app.route("/")
def hello():
    #Does not work here
    storage_client= storage.Client()
    return "error"

#Works without @app.route("")
def test():    
    storage_client= storage.Client()
    # successfuly connects and prints
    print(storage_client) 

if __name__ == "__main__":
    app.run()

#wsgi code
#!/usr/bin/python
#!/usr/secret.json
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/html/FlaskApp/")
from google.cloud import storage
from FlaskApp import app as application

application.secret_key = 'Add your secret key'



Вот журналы, в которых, похоже, есть ошибка в flaskapp.wsgi, но я не слишком уверен ...

mod_wsgi (pid=23303): Target WSGI script '/var/www/html/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.


mod_wsgi (pid=23303): Exception occurred processing WSGI script '/var/www/html/FlaskApp/flaskapp.wsgi'.

Traceback (most recent call last):
File "/var/www/html/FlaskApp/flaskapp.wsgi", line 7, in <module>
from FlaskApp import app as application
File "/var/www/html/FlaskApp/FlaskApp/__init__.py", line 5, in <module>
 storage_client = storage.Client()
File "/usr/local/lib/python2.7/dist-packages/google/cloud/storage/


raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
 DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or ex$

1 Ответ

0 голосов
/ 07 ноября 2019

Вам необходимо предоставить учетные данные для учетной записи службы, которую вы планируете использовать. Как видно из ошибки, для этого можно установить переменную среды GOOGLE_APPLICATION_CREDENTIALS .

Для этого выполните следующие шаги:

  • Загрузите ключ учетной записи службы в формате JSON для учетной записи службы, которую вы планируете использовать.
  • Linux или MacOS ) работает: export GOOGLE_APPLICATION_CREDENTIALS="[PATH-TO-THE-KEY]"
  • Windows ): $env:GOOGLE_APPLICATION_CREDENTIALS="[PATH-TO-THE-KEY]"

В качестве альтернативы , вы можете передать путь к ключу учетной записи службы в своем коде:

storage_client = storage.Client.from_service_account_json(
        'service_account_key.json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...