Python gcloud应用程序部署:此部署的文件太多

Python gcloud应用程序部署:此部署的文件太多,python,google-app-engine,flask,Python,Google App Engine,Flask,当我试图通过gcloud部署我的GAE应用程序时,我遇到了以下错误 Updating service [default]...failed. ERROR: (gcloud.app.deploy) Error Response: [400] This deployment has too many files. New versions are limited to

当我试图通过gcloud部署我的GAE应用程序时,我遇到了以下错误

Updating service [default]...failed.                                                                  
ERROR: (gcloud.app.deploy) Error Response: [400] This deployment has too many files. New versions are limited to 10000 files for this app.

Details: [
  [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        {
          "description": "This deployment has too many files. New versions are limited to 10000 files for this app.",
          "field": "version.deployment.files[...]"
        }
      ]
    }
  ]
]

有没有办法解决这个问题

如果您尝试部署的服务中的文件配额确实超过了10000个,那么您可能需要相应地减少数量

其他尝试事项:

  • 您可能会获得配额增加,请参阅
  • 删除实际上不需要的任何文件,或者在部署期间跳过它们,或者,对于更新的CloudSDK版本,请参阅
  • <> LI>如果你有很多静态文件,考虑将它们(其中的一些)移动到GCS,请参阅
  • 将服务拆分为多个较小的服务-每个服务都有自己的10000个文件限制

假设您实际上没有达到文件配额,则错误通常表示您的应用程序目录中有循环/循环引用符号链接。这也可以解释你在这篇文章的评论中提到的路径:。您只需修复有问题的符号链接。同样,一个简单/一致的目录结构有助于防止此类问题。

gcloud app deploy
编写一个日志文件,并告诉您该日志在输出的早期位置。检查日志。它会告诉你上传的内容

我看到人们陷入困境的两种常见方式是

  • 使用virtualenv,但不将
    venv
    (或
    .venv
    ,如果您选择了该名称)添加到
    跳过文件中
  • 使用git,但忘记将
    .git
    添加到
    跳过_文件

  • 对于python runtime 3.7,可以通过将这些文件添加到.gcloudingore来解决此错误。yaml

    我可以通过将google cloud sdk文件夹添加到项目根文件夹中的.gcloudignore来减少上载的文件

    几件事:

  • 有时
    静态
    文件夹会变得有点凌乱。尝试删除它并重新运行
    python manage.py
    ,这将为我减少大约2000个文件
  • 确保您的
    .gcloudignore
    文件忽略
    资产
    文件夹,因为它们刚刚被移动到
    静态
  • 忽略virtualenv文件夹,它们很大

  • 也许您需要忽略file.gcloudignore中的一些文件

    /vendor/
    /node_modules/
    /.git/
    

    这是我的工作

    正如一些评论中提到的,virtualenv文件夹可以有很多文件


    我刚刚在
    .gcloudignore
    文件中添加了
    venv/
    作为新行。

    对于python运行时3.7,通过将这些文件添加到.gcloudingore来解决此错误。yamlading.gcloudignore文件导致错误:error:(gcloud.beta.app.deploy)不能在同一应用程序中同时定义.gcloudignore文件和skip_文件。我们建议您将skip_文件忽略模式转换为.gcloudignore文件。有关gcloudignore的更多信息,请参阅。gcloud更新失败。Bailing out app.yaml中跳过部分的语法是什么?我想让它跳过我的.tox目录,但当我添加一行时:“-^(.tox/),deploy命令报告一个语法错误,然后它会立即覆盖我的更改。@ScottK@ScottK将此作为一个问题发布,以便其他人可以从中受益。如果在中有几个注释,则没有人会看到。我尝试在app.yaml中添加跳过的文件列表,但每当我进行部署时,此文件都会被删除。我没有提交由于它是一个全局文件,所以我取消了更改,但我希望它会被使用和保留。我如何确保它被使用?我如何知道部署正在下载哪些文件?Dee Dave在下面给出了答案。或者使用选项,因为我忘了将
    节点\u模块添加到
    .gcloudignore
    。Oops。