【发布时间】:2020-12-28 13:49:30
【问题描述】:
我在我的 Flask 应用程序中设置了 SERVER_NAME 以开始使用子域,这样我就可以拥有例如两个不同子域的前端和后端:
- frontend.domain.com
- backend.domain.com
我这样设置 Flask:
app.config['SERVER_NAME'] = 'domain.com'
app.url_map.default_subdomain = "frontend"
该应用是使用 Google App Engine 发布的,一切正常,除了默认的 App Engine 域 https://PROJECT_ID.REGION_ID.r.appspot.com 现在返回 404,因为我知道 Flask 无法识别任何匹配的路由。
我认为这很好,因为我从未使用过https://PROJECT_ID.REGION_ID.r.appspot.com,现在我知道我错了......
https://PROJECT_ID.REGION_ID.r.appspot.com 被 Google Task Cloud 用于路由任务,例如myapp.ey.r.appspot.com/my_task_worker,由 Cloud Tasks create_task 调用,现在在我设置 SERVER_NAME 之前工作时遇到 Not Found 404
我该如何解决这个问题?我是否必须以某种方式在我的 Flask 应用程序中硬编码myapp.ey.r.appspot.com?
这是我的 app.yaml 的摘录,经过改编:
runtime: python37
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
env_variables:
DEBUG: False
SERVER_NAME: 'domain.com'
DEFAULT_SUBDOMAIN: 'frontend'
GCP_PROJECT: 'myapp'
CLOUD_TASK_LOCATION: 'europe-west3'
CLOUD_TASK_QUEUE: 'default'
GOOGLE_CLOUD_PLATFORM_API_KEY: 'xxxxxxxx'
...
【问题讨论】:
-
您可以编辑您的问题并添加您的
app.yaml吗? -
@Emmanuel,
app.yaml已添加,谢谢。
标签: python google-app-engine flask google-cloud-tasks