Я искал во многих местах и пробовал несколько способов найти решение. Но ничего не помогло, не могли бы вы помочь мне найти решение. Становится чрезвычайно сложно разместить приложение фляги Python в гибкой среде движка приложений Google. Код Python: "getresource.py"
Здесь - это ссылка от Google для развертывания приложения Python Flask.
Вот простой код:
from flask import Flask, jsonify
from pymysql import connections, ProgrammingError, DatabaseError, MySQLError, DataError
from os import environ
DB_HOST = environ.get("DB_HOST")
USER = environ.get("USER")
PWD = environ.get("PASSWORD")
DATABASE = environ.get("DATABASE")
app = Flask(__name__)
dbconn = connections.Connection(
host=DB_HOST,
port=3306,
user=USER,
password=PWD,
db=DATABASE
)
@app.route("/getResource/<id>", methods=['GET'])
def getresource(id):
result = ()
select_sql = "SELECT `id`, `firstName`, `middleName`, `lastName`, `listOfTechWorkedOn`, `certifications`, `projects`, `applicationWorkLoadTypes` FROM `resource` WHERE `id`=%s"
cursor = dbconn.cursor()
try:
cursor.execute(select_sql, (id))
result = cursor.fetchone()
response = {}
response['id'] = result[0]
response['firstName'] = result[1]
response['middleName'] = result[2]
response['lastName'] = result[3]
response['listOfTechWorkedOn'] = result[4]
response['certifications'] = result[5]
response['projects'] = result[6]
response['applicationWorkLoadTypes'] = result[7]
return jsonify(response)
except ProgrammingError as p:
return
except DatabaseError as d:
return d
except MySQLError as m:
return m
except DataError as de:
return de
dbconn.close()
if __name__ == '__main__':
app.run(host='127.0.0.1',port=8080, debug=True)
Вот файл app.yaml
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT getresource:app
service: getresource
runtime_config:
python_version: 3
manual_scaling:
instances: 1
env_variables:
DB_HOST: "1.2.3.4"
USER: "root"
PASSWORD: "abcdefg"
DATABASE: "abcd"
файл requirements.txt
Flask==1.0.2
gunicorn==19.9.0
PyMySQL==0.9.2
Я получаю следующую ошибку: «развертывание приложения gcloud»
ОШИБКА: (gcloud.app.deploy) Ответ об ошибке: [13] Во время развертывания произошла внутренняя ошибка.
Я пробовал несколько способов, например, изменить код Python, поместить облачные библиотеки Google в файл requirements.txt, изменить порт, имя службы и т. д. Но, похоже, ничего не работает.
И, что удивительно, я также не получаю трассировку ошибок в журналах stackdriver. И похоже, что у Google нет правильного ответа (по крайней мере, из всех поисковых запросов, которые я сделал)
версия gcloud
Google Cloud SDK 222.0.0
bq 2.0.36
core 2018.10.19
gsutil 4.34
**
** Спасибо за ответ. Я пробовал все варианты, но получаю ту же ошибку со следующим отладочным сообщением. Я ничего не могу сделать из этого
Спасибо за ответ. Я попробовал использовать все предложенные варианты, но получил ту же ошибку. Ниже приводится журнал отладки, и я ничего не могу сделать из него.
Updating service [getresource] (this may take several minutes)...failed.
DEBUG: (gcloud.app.deploy) Error Response: [13] An internal error occurred during deployment.
Traceback (most recent call last):
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\cli.py", line 841, in Execute
resources = calliope_command.Run(cli=self, args=args)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\calliope\backend.py", line 770, in Run
resources = command_instance.Run(args)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\surface\app\deploy.py", line 90, in Run
parallel_build=False)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 620, in RunDeploy
flex_image_build_option=flex_image_build_option)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\command_lib\app\deploy_util.py", line 422, in Deploy
extra_config_settings)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\app\appengine_api_client.py", line 207, in DeployService
poller=done_poller)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\app\operations_util.py", line 315, in WaitForOperation
sleep_ms=retry_interval)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\util\waiter.py", line 254, in WaitFor
sleep_ms, _StatusUpdate)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\util\waiter.py", line 316, in PollUntilDone
sleep_ms=sleep_ms)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\core\util\retry.py", line 229, in RetryOnResult
if not should_retry(result, state):
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\util\waiter.py", line 310, in _IsNotDone
return not poller.IsDone(operation)
File "C:\Users\M1044921\AppData\Local\Google\Cloud SDK\google-cloud-sdk\lib\googlecloudsdk\api_lib\app\operations_util.py", line 184, in IsDone
encoding.MessageToPyValue(operation.error)))
OperationError: Error Response: [13] An internal error occurred during deployment.
ERROR: (gcloud.app.deploy) Error Response: [13] An internal error occurred during deployment.
Вы можете использовать набор - флаг многословности для отладки вместе с командой развертывания, которую вы используете для трассировки стека.
Еще одно отличное место для проверки - это лента действий вашего проекта на главной странице консоли. Он покажет вам ситуации, когда GAE не удалось развернуть, потому что вы используете IP-адреса или другие подобные проблемы.
Спасибо за ответ. Я попробовал использовать все предложенные варианты, но получил ту же ошибку. Ниже приводится журнал отладки, и я ничего не могу сделать из него.
Журнал отладки помещен в основной пост
Я мог воспроизвести ошибку в Cloud Shell, используя переменную среды USER. Итак, похоже, эти переменные среды не могут быть перезаписаны. Поэтому я рекомендую изменить имя переменной среды «USER» и сообщить мне, решит ли это проблему.
Я не вижу конфигурации для настройка ресурса в вашем файле app.yaml. Не могли бы вы добавить параметры ресурсов в файл app.yaml и повторить попытку развертывания приложения?