GAE aplikace.yaml nastavení pro Baňky s backend Reagovat a Baňky frontend spolu na jedno nasazení

0

Otázka

Pokouším se nasadit Baňky aplikace na GAE, který slouží vestavěný Reagovat frontend vedle Baňky frontend a backend trasy, definovanými v několika plány.

Lokálně, vše funguje dobře. V Baňce aplikace, já používám Reagovat stavět adresáři jako statické složky a vrátit Reagovat index.html soubor pro většinu frontend trasy.

Tady je základní přehled o můj strukturu:

- main.py
- build
     - index.html
     - static
          - css
          - js
- api
     - auth.py
     - templates
     - static

Index trasu na Baňky úlovky Url, někdy parametrizované pomocí id a odešle tyto žádosti Reagovat frontend:

@views.route('/', defaults={'path': '', 'id': ''})
@views.route('/<string:path>', defaults={'id': ''})  # Match all strings
@views.route('/<path:path>', defaults={'id': ''})  # Match all paths
@views.route('/<string:path>/<string:id>')  # Match URLs that contain IDs
def index(path, id):
    return app.send_static_file('index.html')

Nicméně, ověřování UI není v Reagovat frontend. To musí být doručena do Baňky samostatně. Zvládnout tyto požadavky, ověřování plán přepne url prefix a statické složky.

authentication = Blueprint(
    'authentication', 
    __name__,
    url_prefix='/auth',
    static_folder='static',
    template_folder='templates'
)

@authentication.route('/admin_settings', methods=['GET'])
@login_required
def admin_settings():
    return render_template('admin_settings.html')

Znovu, když běží lokálně, toto nastavení funguje dobře. Ale při nasazení na GAE, setkal jsem se s mnoha různými chybami, které vyplývají z toho, jak jsem strukturu aplikace.yaml nastavení, včetně 502s, kód 404, a nekonečně čekající síťové požadavky, které jsou zřejmě důsledkem pracovníků načasování.

Jak by měla aplikace.yaml soubor na GAE být napsán pro toto nastavení? Největší úspěch jsem měl s následující aplikaci.yaml soubor, který alespoň načte Reagovat frontend (i když všechny ostatní cesty se zdají vyvolat časové limity):

# app.yaml
runtime: python39
entrypoint: gunicorn -b :$PORT main:app

# handlers
handlers:
  - url: /.*
    script: main.app
flask google-app-engine nginx python
2021-11-22 23:38:09
1

Nejlepší odpověď

2

Měli byste nakonfigurovat app.yaml aby sloužit své statické soubory z vaší aplikace a pracovat směrování vaší aplikace. Například:

runtime: python39
entrypoint: gunicorn -b :$PORT main:app

# handlers
handlers:
  - url: /api
    static_dir: api
  - url: /api/static
    static_dir: static
  - url: /.*
    script: auto
2021-11-29 09:29:05

JM odpověď byla správná. Ukázalo se, že jsem také měl DB připojení problém, který házel některé zavádějící časové limity. Takže pokud někdo používá to v budoucnu může ušetřit nějaký čas snaží vystopovat individuální chyby a identifikovat každý problém.
Solvation

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................