Gunicorn 应用程序无法与 GAE 配合使用(静态文件可以工作,但向脚本发出请求会导致 503 错误代码)

问题描述 投票:0回答:1

静态文件工作正常,但由于某种原因入口点根本没有运行。我什至尝试将运行的 start.sh 作为带有 echo“Starting Gunicorn”的入口点,但我在日志中没有看到它。我很确定这不是我的代码,因为我已经在本地进行了测试。当我没有使用gunicorn时,这曾经有效。

app.yaml:

runtime: python39
entrypoint: gunicorn --worker-class eventlet -t 4 -w 1 --timeout 120 main:app -b :$PORT

manual_scaling:
  instances: 1

network:
  session_affinity: true

handlers:
  # API handlers
  - url: /api/.*
    script: auto
    secure: always
    redirect_http_response_code: 301

  # Static file handlers
  - url: /(.*\.(html|css|js|png|jpg|jpeg|gif|ico|json|webp|svg))
    static_files: frontend/dist/\1
    upload: frontend/dist/(.*\.(html|css|js|png|jpg|jpeg|gif|ico|json|webp|svg))
    secure: always

  # Catch-all handler for other static files and single-page app support
  - url: /.*
    static_files: frontend/dist/index.html
    upload: frontend/dist/index.html
    secure: always

我期望 API/脚本和静态前端能够工作,但由于某种原因只有静态文件可以工作。

已解决: 我发现路由处理有问题,于是我开始在 Python 上托管静态文件。因为这是一个 SPA,所以我的处理程序看起来像这样:

# Catch-all for SPA
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
    if re.match("(.*\.(html|css|js|png|jpg|jpeg|gif|ico|json|webp|svg))", path):
        return app.send_static_file(path)
    return app.send_static_file("index.html")
python google-app-engine gunicorn gcloud
1个回答
0
投票

已解决:我发现路由处理有问题,我开始在 Python 上托管静态文件。因为这是一个 SPA,所以我的处理程序看起来像这样:

# Catch-all for SPA
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
    if re.match("(.*\.(html|css|js|png|jpg|jpeg|gif|ico|json|webp|svg))", path):
        return app.send_static_file(path)
    return app.send_static_file("index.html")
``
Thanks to NoCommandLine for helping me out.
© www.soinside.com 2019 - 2024. All rights reserved.