gcloud preview app deploy每次在python项目中上传所有源代码文件需要很长时间

Posted

技术标签:

【中文标题】gcloud preview app deploy每次在python项目中上传所有源代码文件需要很长时间【英文标题】:gcloud preview app deploy uploads all souce code files everytime in python project taking long time 【发布时间】:2016-05-05 06:02:11 【问题描述】:

在我最近将带有 gcloud components update 的 gcloud 组件更新到版本 108.0.0 后,我注意到 gcloud preview app deploy app.yaml 命令对于我的项目每次都开始花费太长时间(大约 15 分钟)。在此之前,它只需要大约一分钟即可完成。

我发现使用gcloud preview app deploy --verbosity info app.yaml 显示部署过程的进度,我注意到每次部署时都会上传源代码中的每个文件,包括lib 目录中的文件,该目录安装了许多包,大约 2000 个文件在其中,这就是延迟的来源。由于我是 appengine 的新手,我不知道这是否正常。

该项目存在于 git repo 的一个文件夹中,我注意到每次部署后,default 目录中的 2 个文件,source-context.jsonsource-contexts.json,正在创建并包含有关 git repo 的信息。我觉得这可能是相关的。

我在这里解决了许多相关问题,但无法弄清楚问题所在。如果这个问题完全可以解决,那就太好了,因为每次部署都需要等待 15 分钟。

我一个月前才开始使用 google appengine,所以如果问题不正确,请不要介意。如果需要其他信息来解决此问题,请告诉我。谢谢

更新:我在 ubuntu 14.04 LTS 上使用 gcloud sdk。

【问题讨论】:

每次部署都有新版本吗?或者你是否重复使用相同的版本?如果您重用一个版本,我相信只会上传更改的文件,但如果您更改版本,则会上传所有文件。 虽然我喜欢这个想法,但如果新部署中的某些内容崩溃并且我需要回滚到以前的部署怎么办?我不会有一个可以回滚的版本吗?如果不是这种情况并且您的建议有效,那么这是正确的答案。确认后我会提供更新。到目前为止,我还没有在部署命令中提到 --version,在这种情况下 gcloud 会自动创建一个版本。 @JeffO'Neill 我传递了一个固定的--version,而gcloud app deploy 有时只上传更改的文件,但有时会上传所有文件。不知道为什么。 (gcloud sdk 182.0.0,app-engine-python 1.9.63,在 mac os x 上。) 【参考方案1】:

是的,这是预期的行为,每个部署都是独立的,不假设任何“已经部署”,所有应用程序的工件都会在每次部署时上传。

更新:Kekito 的评论表明不同的工具实际上可能表现不同。我的回答适用于 linux 版本的 Python SDK,不管是部署新版本还是重新部署同一个版本。

【讨论】:

哦。但是在我更新 gcloud 版本之前不是这样的吗? 我一直都是这样的 AFAIK。 else 可能已经改变,它可能是一些暂时的情况。重试几次以确保它不是暂时的。如果不是,则回滚到您拥有的先前版本,以查看它是否确实与升级有关。 我之前为项目部署新版本时,只需要一分钟,现在是 15 到 20 分钟。我试图回滚以前的版本,但没有运气。还重试了几次部署。谢谢,我会继续寻找原因。一旦我解决了为什么之前这么快,就会接受答案。 您可能还想看看这个问答:***.com/questions/33769879/…,它提供了一个您可能认为可以接受的替代方案。 我使用 AppEngineLauncher GUI 进行部署,它只上传已更改的文件。你会看到这样的日志语句:10:41 AM Uploaded 2 files and blobs.

以上是关于gcloud preview app deploy每次在python项目中上传所有源代码文件需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章

gcloud preview app deploy每次在python项目中上传所有源代码文件需要很长时间

gcloud - 错误:(gcloud.app.deploy)权限错误获取应用程序

错误:(gcloud.app.deploy)INVALID_ARGUMENT:无法解析源

gcloud app deploy :此部署文件过多

如何禁用`gcloud preview app run'的运行状况检查

错误:(gcloud.app.deploy)您必须在使用自定义运行时提供自己的 Dockerfile