Ошибка «502 Bad Gateway nginx» для просмотра приложения Flask в GCP - PullRequest
0 голосов
/ 10 октября 2019

У меня есть эта проблема в моем приложении Google App Engine. Когда я запускаю приложение с gcloud app browse, на странице появляется следующее сообщение об ошибке:

'502 Bad Gateway nginx'

Я использую приложение Flask.

Вот код:

import os
from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
from uuid import uuid4
from flask import Flask, request, render_template, send_from_directory
import io
from google.cloud import vision
from google.cloud.vision import types

app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app)  

APP_ROOT = os.path.dirname(os.path.abspath(__file__))

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="json_key.txt"
vision_client = vision.ImageAnnotatorClient()

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    labels = ''
    file_url1 = ''
    filename = ''
    file_url = ''
    target = os.path.join(APP_ROOT, '/')
    if request.method == 'POST' and 'photo' in request.files:
        filename = photos.save(request.files['photo'])
        file_url = photos.url(filename)
        with io.open(filename, 'rb') as image_file:
            content = image_file.read()
        image = types.Image(content=content)
        response = vision_client.label_detection(image=image)
        labels = response.label_annotations
    return render_template('index.html', thelabels=labels,image_name=file_url)

"""@app.route('/<filename>')
def send_image(filename):
    #return render_template('index.html', filename=filename)
    return send_from_directory("/", filename)"""
if __name__ == '__main__':
    app.run()

Это файл app.yaml:

runtime: python37

И я не использую файл require.txt!?

1 Ответ

0 голосов
/ 15 октября 2019

Чтобы развернуть приложение App Engine, вам нужно минимум 3 файла.

  1. Файл App.yaml с желаемой конфигурацией вашей установки
  2. Main.py с вашим реальным кодом
  3. Requirements.txt для импорта необходимых библиотек

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

Здесь вы можете увидеть пример желаемых требований. txt

uwsgi==2.0.18
flask==1.1.1
google-cloud==0.34.0
google-cloud-vision==0.39.0
uuid==1.30.0
Flask-Uploads==0.2.1

Вы можететакже получите необходимые файлы, выполнив команду pip freeze > requirements.txt, но имейте в виду, что вы должны запускать эту команду ТОЛЬКО внутри тестовой виртуальной среды , потому что если вы заморозите пип в вашей рабочей среде, вы получите действительнодлинный список с множеством ненужных зависимостей, которые сильно замедляют развертывание приложения

...