静态文件工作正常,但由于某种原因入口点根本没有运行。我什至尝试将运行的 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 上托管静态文件。因为这是一个 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.