【问题标题】:Problem with accessing static files when deploying Django API using Google App Engine使用 Google App Engine 部署 Django API 时访问静态文件的问题
【发布时间】:2021-05-14 13:55:47
【问题描述】:

我的项目的静态文件夹中有schema.yml 文档,在开发过程中一切似乎都正常工作,但是在部署到App Engine 后我收到错误Not Found /static/schema.yml。我的配置如下所示。您有什么想法可能是导致问题的原因吗?

settings.py:

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'templates'),
)
STATIC_URL = '/static/'

app.yaml:

runtime: custom
env: flex
entrypoint: gunicorn -b :$PORT mysite.wsgi
service: mysite-service

handlers:
- url: /static/
  static_dir: static

【问题讨论】:

    标签: python django google-app-engine google-cloud-platform django-rest-framework


    【解决方案1】:

    用于自定义环境的 Google App Engine Flex 会忽略 handlers section。如果您将此部分添加到“app.yaml”但环境不使用,则没有问题。处理程序部分适用于Google App Engine Standard。因此,这就是为什么在 App Engine 标准环境中有效但在 App Engine flex 中无效的原因。唯一支持处理程序的语言是 java,您可以找到说明可以做到这一点的文档。

    但是,为了提供静态文件,您可以查看this doc,其中包含在 App Engine Flex 中配置静态文件的必要步骤。

    【讨论】:

    • 所以唯一的解决方案是在外部源中上传静态文件,例如谷歌云存储,只使用像STATIC_URL = 'https://storage.googleapis.com/{storage bucket}/static/'这样的配置?我从来没有想过从本地系统访问和下载静态文件是不可能的。
    猜你喜欢
    • 1970-01-01
    • 2016-11-06
    • 2020-11-22
    • 2011-06-03
    • 2020-01-22
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多