如何部署 GCP App Engine worker?

How to deploy GCP App Engine worker?

我正在尝试在 GCP 上制作个人应用程序 - 在将复杂的 Python 应用程序部署到灵活的 Google 云环境教程 [https://cloud.google.com/python/getting-started/using-pub-sub ] 之后。 在第 6-pub/sub 步中,我们学习在后端使用 worker 来执行 parallel/background 任务:我无法部署该 worker。

我没有更改教程存储库中的代码。

回购:https://github.com/GoogleCloudPlatform/getting-started-python

YAML 文件:https://github.com/GoogleCloudPlatform/getting-started-python/blob/master/6-pubsub/worker.yaml

部署工人的命令:gcloud app deploy worker.yaml

Deepaks-MacBook-Air:6-pubsub deepak$ gcloud app deploy worker.yaml
Services to deploy:

descriptor:      [/Users/deepak/Downloads/google-cloud-sdk/getting-started-python/6-pubsub/worker.yaml]
source:          [/Users/deepak/Downloads/google-cloud-sdk/getting-started-python/6-pubsub]
target project:  [trans-envoy-212309]
target service:  [worker]
target version:  [20180805t173335]
target url:      [https://worker-dot-trans-envoy-212309.appspot.com]


Do you want to continue (Y/n)?  y

Beginning deployment of service [worker]...
Building and pushing image for service [worker]
Some files were skipped. Pass `--verbosity=info` to see which ones.
You may also view the gcloud log file, found at
[/Users/deepak/.config/gcloud/logs/2018.08.05/17.33.29.084098.log].
Started cloud build [64078dbc-77b9-4fce-8b94-b0f25889f591].
To see logs in the Cloud Console: https://console.cloud.google.com/gcr/builds/64078dbc-77b9-4fce-8b94-b0f25889f591?project=1015478538085
-------------------------------------------------------- REMOTE BUILD OUTPUT ---------------------------------------------------------
starting build "64078dbc-77b9-4fce-8b94-b0f25889f591"

FETCHSOURCE
Fetching storage object: gs://staging.trans-envoy-212309.appspot.com/asia.gcr.io/trans-envoy-212309/appengine/worker.20180805t173335:latest#1533470623241028
Copying gs://staging.trans-envoy-212309.appspot.com/asia.gcr.io/trans-envoy-212309/appengine/worker.20180805t173335:latest#1533470623241028...
- [1 files][ 14.1 KiB/ 14.1 KiB]                                                
Operation completed over 1 objects/14.1 KiB.                                     
BUILD
Starting Step #0
Step #0: Pulling image: gcr.io/gcp-runtimes/python/gen-dockerfile@sha256:cd5139afbd6e8031bcd23e22775f2c92b7113783cd98d7086435a1922e7a481a
Step #0: sha256:cd5139afbd6e8031bcd23e22775f2c92b7113783cd98d7086435a1922e7a481a: Pulling from gcp-runtimes/python/gen-dockerfile
Step #0: Digest: sha256:cd5139afbd6e8031bcd23e22775f2c92b7113783cd98d7086435a1922e7a481a
Step #0: Status: Downloaded newer image for gcr.io/gcp-runtimes/python/gen-dockerfile@sha256:cd5139afbd6e8031bcd23e22775f2c92b7113783cd98d7086435a1922e7a481a
Finished Step #0
Starting Step #1
Step #1: Pulling image: gcr.io/cloud-builders/docker@sha256:372a71589616bf93657cfb045c981c6e3737df42e299f857702311596a2314d6
Step #1: sha256:372a71589616bf93657cfb045c981c6e3737df42e299f857702311596a2314d6: Pulling from cloud-builders/docker
Step #1: 1d47b358304c: Already exists
Step #1: c603e5aa6ec7: Pulling fs layer
Step #1: 3c2cba919283: Pulling fs layer
Step #1: 231942139aa9: Pulling fs layer
Step #1: 3c2cba919283: Verifying Checksum
Step #1: 3c2cba919283: Download complete
Step #1: c603e5aa6ec7: Verifying Checksum
Step #1: c603e5aa6ec7: Download complete
Step #1: c603e5aa6ec7: Pull complete
Step #1: 3c2cba919283: Pull complete
Step #1: 231942139aa9: Verifying Checksum
Step #1: 231942139aa9: Download complete
Step #1: 231942139aa9: Pull complete
Step #1: Digest: sha256:372a71589616bf93657cfb045c981c6e3737df42e299f857702311596a2314d6
Step #1: Status: Downloaded newer image for gcr.io/cloud-builders/docker@sha256:372a71589616bf93657cfb045c981c6e3737df42e299f857702311596a2314d6
Step #1: Sending build context to Docker daemon  81.41kB
Step #1: Step 1/9 : FROM gcr.io/google-appengine/python@sha256:67fd35064a812fd0ba0a6e9485410f9f2710ebf7b0787a7b350ce6a20f166bfe
Step #1: sha256:67fd35064a812fd0ba0a6e9485410f9f2710ebf7b0787a7b350ce6a20f166bfe: Pulling from google-appengine/python
Step #1: Digest: sha256:67fd35064a812fd0ba0a6e9485410f9f2710ebf7b0787a7b350ce6a20f166bfe
Step #1: Status: Downloaded newer image for gcr.io/google-appengine/python@sha256:67fd35064a812fd0ba0a6e9485410f9f2710ebf7b0787a7b350ce6a20f166bfe
Step #1:  ---> 1fa6bf20377c
Step #1: Step 2/9 : LABEL python_version=python3.6
Step #1:  ---> Running in 6ead3789606d
Step #1: Removing intermediate container 6ead3789606d
Step #1:  ---> a964a34b97c0
Step #1: Step 3/9 : RUN virtualenv --no-download /env -p python3.6
Step #1:  ---> Running in 35d31afec557
Step #1: Running virtualenv with interpreter /opt/python3.6/bin/python3.6
Step #1: Using base prefix '/opt/python3.6'
Step #1: New python executable in /env/bin/python3.6
Step #1: Also creating executable in /env/bin/python
Step #1: Installing setuptools, pip, wheel...done.
Step #1: Removing intermediate container 35d31afec557
Step #1:  ---> 940d1af5de42
Step #1: Step 4/9 : ENV VIRTUAL_ENV /env
Step #1:  ---> Running in 6a86b4618250
Step #1: Removing intermediate container 6a86b4618250
Step #1:  ---> 73a0bdc7f4e7
Step #1: Step 5/9 : ENV PATH /env/bin:$PATH
Step #1:  ---> Running in 95d93c4572d6
Step #1: Removing intermediate container 95d93c4572d6
Step #1:  ---> 3a90a44867eb
Step #1: Step 6/9 : ADD requirements.txt /app/
Step #1:  ---> e22a30aa0683
Step #1: Step 7/9 : RUN pip install -r requirements.txt
Step #1:  ---> Running in 17479e57bb65
Step #1: Collecting Flask==0.12.2 (from -r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/77/32/e3597cb19ffffe724ad4bf0beca4153419918e7fa4ba6a34b04ee4da3371/Flask-0.12.2-py2.py3-none-any.whl (83kB)
Step #1: Collecting google-cloud-datastore==1.4.0 (from -r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/aa/bc/2cee1ac9cc70764845a6ff73e4e5dc50aef1225aac417461e1ef878ed38e/google_cloud_datastore-1.4.0-py2.py3-none-any.whl (44kB)
Step #1: Collecting google-cloud-storage==1.7.0 (from -r requirements.txt (line 3))
Step #1:   Downloading https://files.pythonhosted.org/packages/37/18/b91cf7eeecd4b188297e435a8a570046ab4b39efd054322a7c21df27fa28/google_cloud_storage-1.7.0-py2.py3-none-any.whl (52kB)
Step #1: Collecting google-cloud-logging==1.4.0 (from -r requirements.txt (line 4))
Step #1:   Downloading https://files.pythonhosted.org/packages/12/a6/c6f0fd13fbe70b007b105d42b1914e186dea60bc58628f694ae2b369d20b/google_cloud_logging-1.4.0-py2.py3-none-any.whl (43kB)
Step #1: Collecting google-cloud-error_reporting==0.29.0 (from -r requirements.txt (line 5))
Step #1:   Downloading https://files.pythonhosted.org/packages/c9/11/f5ba8a2cd2d6a9c2b34db5b160c955e43afbf51ef6a17ab5b68cffe65152/google_cloud_error_reporting-0.29.0-py2.py3-none-any.whl (52kB)
Step #1: Collecting gunicorn==19.7.1 (from -r requirements.txt (line 6))
Step #1:   Downloading https://files.pythonhosted.org/packages/64/32/becbd4089a4c06f0f9f538a76e9fe0b19a08f010bcb47dcdbfbc640cdf7d/gunicorn-19.7.1-py2.py3-none-any.whl (111kB)
Step #1: Collecting oauth2client==4.1.2 (from -r requirements.txt (line 7))
Step #1:   Downloading https://files.pythonhosted.org/packages/82/d8/3eab58811282ac7271a081ba5c0d4b875ce786ca68ce43e2a62ade32e9a8/oauth2client-4.1.2-py2.py3-none-any.whl (99kB)
Step #1: Collecting Flask-SQLAlchemy==2.3.2 (from -r requirements.txt (line 8))
Step #1:   Downloading https://files.pythonhosted.org/packages/a1/44/294fb7f6bf49cc7224417cd0637018db9fee0729b4fe166e43e2bbb1f1c8/Flask_SQLAlchemy-2.3.2-py2.py3-none-any.whl
Step #1: Collecting PyMySQL==0.8.0 (from -r requirements.txt (line 9))
Step #1:   Downloading https://files.pythonhosted.org/packages/e5/07/c0f249aa0b7b0517b5843eeab689b9ccc6a6bb0536fc9d95e65901e6f2ac/PyMySQL-0.8.0-py2.py3-none-any.whl (83kB)
Step #1: Collecting Flask-PyMongo==0.5.1 (from -r requirements.txt (line 10))
Step #1:   Downloading https://files.pythonhosted.org/packages/fa/71/ab920741dedd605ef4adbd57d0c7d9f43a6b6fe4068604fffbc6f64b2c9c/Flask_PyMongo-0.5.1-py3-none-any.whl
Step #1: Collecting PyMongo==3.6.0 (from -r requirements.txt (line 11))
Step #1:   Downloading https://files.pythonhosted.org/packages/c1/84/068994d5d24e7e3012f1ab1937e0b15af712a6c5788c77d17ea9d096d12f/pymongo-3.6.0-cp36-cp36m-manylinux1_x86_64.whl (378kB)
Step #1: Collecting six==1.11.0 (from -r requirements.txt (line 12))
Step #1:   Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Step #1: Collecting requests[security]==2.18.4 (from -r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/49/df/50aa1999ab9bde74656c2919d9c0c085fd2b3775fd3eca826012bef76d8c/requests-2.18.4-py2.py3-none-any.whl (88kB)
Step #1: Collecting honcho==1.0.1 (from -r requirements.txt (line 14))
Step #1:   Downloading https://files.pythonhosted.org/packages/12/c2/95faf9e062e37f50fb685972692395bef019a554c08447282a81e35bf031/honcho-1.0.1-py2.py3-none-any.whl
Step #1: Collecting psq==0.6.0 (from -r requirements.txt (line 15))
Step #1:   Downloading https://files.pythonhosted.org/packages/6b/dd/2366380f1e5a9914a0503dba2d3a608551371cec5c073da958c6a7c57ae8/psq-0.6.0-py2.py3-none-any.whl
Step #1: Collecting itsdangerous>=0.21 (from Flask==0.12.2->-r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)
Step #1: Collecting Jinja2>=2.4 (from Flask==0.12.2->-r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)
Step #1: Collecting Werkzeug>=0.7 (from Flask==0.12.2->-r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
Step #1: Collecting click>=2.0 (from Flask==0.12.2->-r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
Step #1: Collecting gapic-google-cloud-datastore-v1<0.16dev,>=0.15.0 (from google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/ec/9c/6d69a6e6551006c4e87192a396b983421a6978bc57657619bc998a264b31/gapic-google-cloud-datastore-v1-0.15.3.tar.gz
Step #1: Collecting google-gax<0.16dev,>=0.15.7 (from google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/4f/b4/ff312fa42f91535c67567c1d08e972db0e7c548e9a63c6f3bcc5213b32fc/google_gax-0.15.16-py2.py3-none-any.whl (46kB)
Step #1: Collecting google-cloud-core<0.29dev,>=0.28.0 (from google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/0f/41/ae2418b4003a14cf21c1c46d61d1b044bf02cf0f8f91598af572b9216515/google_cloud_core-0.28.1-py2.py3-none-any.whl
Step #1: Collecting google-api-core<0.2.0dev,>=0.1.1 (from google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/10/65/6237293db4fbf6f0bcf7c2b67c63e4dc4837c631f194064ae84957cd0313/google_api_core-0.1.4-py2.py3-none-any.whl (50kB)
Step #1: Collecting google-auth>=1.2.0 (from google-cloud-storage==1.7.0->-r requirements.txt (line 3))
Step #1:   Downloading https://files.pythonhosted.org/packages/58/cb/96dbb4e50e7a9d856e89cc9c8e36ab1055f9774f7d85f37e2156c1d79d9f/google_auth-1.5.1-py2.py3-none-any.whl (65kB)
Step #1: Collecting google-resumable-media>=0.3.1 (from google-cloud-storage==1.7.0->-r requirements.txt (line 3))
Step #1:   Downloading https://files.pythonhosted.org/packages/77/95/2e4020a54366423ddba715f89fb7ca456c8f048b15cada6cd6a54cf10e8c/google_resumable_media-0.3.1-py2.py3-none-any.whl
Step #1: Collecting gapic-google-cloud-logging-v2<0.92dev,>=0.91.0 (from google-cloud-logging==1.4.0->-r requirements.txt (line 4))
Step #1:   Downloading https://files.pythonhosted.org/packages/aa/a8/2fcb30c255243d0b5b1a1c4b3cd0a73ca87c82f8a6673be60fb003a6e184/gapic-google-cloud-logging-v2-0.91.3.tar.gz
Step #1: Collecting pyasn1-modules>=0.0.5 (from oauth2client==4.1.2->-r requirements.txt (line 7))
Step #1:   Downloading https://files.pythonhosted.org/packages/19/02/fa63f7ba30a0d7b925ca29d034510fc1ffde53264b71b4155022ddf3ab5d/pyasn1_modules-0.2.2-py2.py3-none-any.whl (62kB)
Step #1: Collecting pyasn1>=0.1.7 (from oauth2client==4.1.2->-r requirements.txt (line 7))
Step #1:   Downloading https://files.pythonhosted.org/packages/d1/a1/7790cc85db38daa874f6a2e6308131b9953feb1367f2ae2d1123bb93a9f5/pyasn1-0.4.4-py2.py3-none-any.whl (72kB)
Step #1: Collecting httplib2>=0.9.1 (from oauth2client==4.1.2->-r requirements.txt (line 7))
Step #1:   Downloading https://files.pythonhosted.org/packages/fd/ce/aa4a385e3e9fd351737fd2b07edaa56e7a730448465aceda6b35086a0d9b/httplib2-0.11.3.tar.gz (215kB)
Step #1: Collecting rsa>=3.1.4 (from oauth2client==4.1.2->-r requirements.txt (line 7))
Step #1:   Downloading https://files.pythonhosted.org/packages/e1/ae/baedc9cb175552e95f3395c43055a6a5e125ae4d48a1d7a924baca83e92e/rsa-3.4.2-py2.py3-none-any.whl (46kB)
Step #1: Collecting SQLAlchemy>=0.8.0 (from Flask-SQLAlchemy==2.3.2->-r requirements.txt (line 8))
Step #1:   Downloading https://files.pythonhosted.org/packages/8a/c2/29491103fd971f3988e90ee3a77bb58bad2ae2acd6e8ea30a6d1432c33a3/SQLAlchemy-1.2.10.tar.gz (5.6MB)
Step #1: Collecting urllib3<1.23,>=1.21.1 (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/63/cb/6965947c13a94236f6d4b8223e21beb4d576dc72e8130bd7880f600839b8/urllib3-1.22-py2.py3-none-any.whl (132kB)
Step #1: Collecting certifi>=2017.4.17 (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl (150kB)
Step #1: Collecting chardet<3.1.0,>=3.0.2 (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Step #1: Collecting idna<2.7,>=2.5 (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/27/cc/6dd9a3869f15c2edfab863b992838277279ce92663d334df9ecf5106f5c6/idna-2.6-py2.py3-none-any.whl (56kB)
Step #1: Collecting cryptography>=1.3.4; extra == "security" (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/c2/fa/fa9a8933c285895935d1392922fe721e9cb1b2c1881d14f149213a227ee3/cryptography-2.3-cp34-abi3-manylinux1_x86_64.whl (2.1MB)
Step #1: Collecting pyOpenSSL>=0.14; extra == "security" (from requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/96/af/9d29e6bd40823061aea2e0574ccb2fcf72bfd6130ce53d32773ec375458c/pyOpenSSL-18.0.0-py2.py3-none-any.whl (53kB)
Step #1: Collecting colorlog<3.0.0,>=2.6.0 (from psq==0.6.0->-r requirements.txt (line 15))
Step #1:   Downloading https://files.pythonhosted.org/packages/61/ff/d6337d488739c1a7ade37f736880e44717bcb0e7cea178c17774a4a93700/colorlog-2.10.0-py2.py3-none-any.whl
Step #1: Collecting google-cloud-pubsub>=0.29.0 (from psq==0.6.0->-r requirements.txt (line 15))
Step #1:   Downloading https://files.pythonhosted.org/packages/66/f9/bfa284399fb59a8896e0c4164b46185f61f35a90a18c67b366406ad472a6/google_cloud_pubsub-0.35.4-py2.py3-none-any.whl (93kB)
Step #1: Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->Flask==0.12.2->-r requirements.txt (line 1))
Step #1:   Downloading https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
Step #1: Collecting proto-google-cloud-datastore-v1[grpc]<0.91dev,>=0.90.3 (from gapic-google-cloud-datastore-v1<0.16dev,>=0.15.0->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/2a/1f/4124f15e1132a2eeeaf616d825990bb1d395b4c2c37362654ea5cd89bb42/proto-google-cloud-datastore-v1-0.90.4.tar.gz
Step #1: Collecting googleapis-common-protos[grpc]<2.0dev,>=1.5.2 (from gapic-google-cloud-datastore-v1<0.16dev,>=0.15.0->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/00/03/d25bed04ec8d930bcfa488ba81a2ecbf7eb36ae3ffd7e8f5be0d036a89c9/googleapis-common-protos-1.5.3.tar.gz
Step #1: Collecting protobuf<4.0dev,>=3.0.0 (from google-gax<0.16dev,>=0.15.7->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/fc/f0/db040681187496d10ac50ad167a8fd5f953d115b16a7085e19193a6abfd2/protobuf-3.6.0-cp36-cp36m-manylinux1_x86_64.whl (7.1MB)
Step #1: Collecting ply==3.8 (from google-gax<0.16dev,>=0.15.7->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/96/e0/430fcdb6b3ef1ae534d231397bee7e9304be14a47a267e82ebcb3323d0b5/ply-3.8.tar.gz (157kB)
Step #1: Collecting grpcio<2.0dev,>=1.0.2 (from google-gax<0.16dev,>=0.15.7->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/2f/f6/b1a6a703620ac4c393d286b0289c6bb51294629aa1cae8ef3bc1bcafd164/grpcio-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (9.3MB)
Step #1: Collecting future<0.17dev,>=0.16.0 (from google-gax<0.16dev,>=0.15.7->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/00/2b/8d082ddfed935f3608cc61140df6dcbf0edea1bc3ab52fb6c29ae3e81e85/future-0.16.0.tar.gz (824kB)
Step #1: Collecting dill<0.3dev,>=0.2.5 (from google-gax<0.16dev,>=0.15.7->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/6f/78/8b96476f4ae426db71c6e86a8e6a81407f015b34547e442291cd397b18f3/dill-0.2.8.2.tar.gz (150kB)
Step #1: Requirement already satisfied: setuptools>=34.0.0 in /env/lib/python3.6/site-packages (from google-api-core<0.2.0dev,>=0.1.1->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1: Collecting pytz (from google-api-core<0.2.0dev,>=0.1.1->google-cloud-datastore==1.4.0->-r requirements.txt (line 2))
Step #1:   Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
Step #1: Collecting cachetools>=2.0.0 (from google-auth>=1.2.0->google-cloud-storage==1.7.0->-r requirements.txt (line 3))
Step #1:   Downloading https://files.pythonhosted.org/packages/0a/58/cbee863250b31d80f47401d04f34038db6766f95dea1cc909ea099c7e571/cachetools-2.1.0-py2.py3-none-any.whl
Step #1: Collecting proto-google-cloud-logging-v2[grpc]<0.92dev,>=0.91.3 (from gapic-google-cloud-logging-v2<0.92dev,>=0.91.0->google-cloud-logging==1.4.0->-r requirements.txt (line 4))
Step #1:   Downloading https://files.pythonhosted.org/packages/36/cc/52c1b363b992546d4658a61eb551c85af94ad424734e6c899fdfc8330811/proto-google-cloud-logging-v2-0.91.3.tar.gz
Step #1: Collecting asn1crypto>=0.21.0 (from cryptography>=1.3.4; extra == "security"->requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a510576f1a56d1e0a7ad7bd8ab5ed7cdc600ef7cd06222/asn1crypto-0.24.0-py2.py3-none-any.whl (101kB)
Step #1: Collecting cffi!=1.11.3,>=1.7 (from cryptography>=1.3.4; extra == "security"->requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/6d/c0/47db8f624f3e4e2f3f27be03a93379d1ba16a1450a7b1aacfa0366e2c0dd/cffi-1.11.5-cp36-cp36m-manylinux1_x86_64.whl (421kB)
Step #1: Collecting grpc-google-iam-v1<0.12dev,>=0.11.1 (from google-cloud-pubsub>=0.29.0->psq==0.6.0->-r requirements.txt (line 15))
Step #1:   Downloading https://files.pythonhosted.org/packages/9b/28/f26f67381cb23e81271b8d66c00a846ad9d25a909ae1ae1df8222fad2744/grpc-google-iam-v1-0.11.4.tar.gz
Step #1: Collecting pycparser (from cffi!=1.11.3,>=1.7->cryptography>=1.3.4; extra == "security"->requests[security]==2.18.4->-r requirements.txt (line 13))
Step #1:   Downloading https://files.pythonhosted.org/packages/8c/2d/aad7f16146f4197a11f8e91fb81df177adcc2073d36a17b1491fd09df6ed/pycparser-2.18.tar.gz (245kB)
Step #1: Building wheels for collected packages: itsdangerous, gapic-google-cloud-datastore-v1, gapic-google-cloud-logging-v2, httplib2, SQLAlchemy, MarkupSafe, proto-google-cloud-datastore-v1, googleapis-common-protos, ply, future, dill, proto-google-cloud-logging-v2, grpc-google-iam-v1, pycparser
Step #1:   Running setup.py bdist_wheel for itsdangerous: started
Step #1:   Running setup.py bdist_wheel for itsdangerous: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5
Step #1:   Running setup.py bdist_wheel for gapic-google-cloud-datastore-v1: started
Step #1:   Running setup.py bdist_wheel for gapic-google-cloud-datastore-v1: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/79/a9/0f/1b6929a5f1961d22553efa844ea60c589bffcf6e1bd019f7c9
Step #1:   Running setup.py bdist_wheel for gapic-google-cloud-logging-v2: started
Step #1:   Running setup.py bdist_wheel for gapic-google-cloud-logging-v2: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/67/f7/2c/c104c937201a0a2bba168ae7058ce7d10da96d881b504a1ae4
Step #1:   Running setup.py bdist_wheel for httplib2: started
Step #1:   Running setup.py bdist_wheel for httplib2: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/1b/9c/9e/1f6fdb21dbb1fe6a99101d697f12cb8c1fa96c1587df69adba
Step #1:   Running setup.py bdist_wheel for SQLAlchemy: started
Step #1:   Running setup.py bdist_wheel for SQLAlchemy: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/3b/5e/6b/6716bdf0815da6a7e4526c1f39d6e7d8cbb5eb5054f83f98fb
Step #1:   Running setup.py bdist_wheel for MarkupSafe: started
Step #1:   Running setup.py bdist_wheel for MarkupSafe: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/33/56/20/ebe49a5c612fffe1c5a632146b16596f9e64676768661e4e46
Step #1:   Running setup.py bdist_wheel for proto-google-cloud-datastore-v1: started
Step #1:   Running setup.py bdist_wheel for proto-google-cloud-datastore-v1: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/bd/ce/33/8b769968db3761c42c7a91d8a0dbbafc50acfa0750866c8abd
Step #1:   Running setup.py bdist_wheel for googleapis-common-protos: started
Step #1:   Running setup.py bdist_wheel for googleapis-common-protos: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/62/45/af/649bbf07b6595fda010be1bda667cd56d0444d07afc6f8b687
Step #1:   Running setup.py bdist_wheel for ply: started
Step #1:   Running setup.py bdist_wheel for ply: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/f2/21/c0/f0056cc96847933daa961a19eb59a2ecd0228fdbe3376e7a68
Step #1:   Running setup.py bdist_wheel for future: started
Step #1:   Running setup.py bdist_wheel for future: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/bf/c9/a3/c538d90ef17cf7823fa51fc701a7a7a910a80f6a405bf15b1a
Step #1:   Running setup.py bdist_wheel for dill: started
Step #1:   Running setup.py bdist_wheel for dill: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/e2/5d/17/f87cb7751896ac629b435a8696f83ee75b11029f5d6f6bda72
Step #1:   Running setup.py bdist_wheel for proto-google-cloud-logging-v2: started
Step #1:   Running setup.py bdist_wheel for proto-google-cloud-logging-v2: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/a2/63/53/2c822aa22c24d620ce09f799ff1b38cceaac1ae7698368b0d8
Step #1:   Running setup.py bdist_wheel for grpc-google-iam-v1: started
Step #1:   Running setup.py bdist_wheel for grpc-google-iam-v1: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/b6/c6/31/c20321a5a3fde456fc375b7c2814135e6e98bc0d74c40239d9
Step #1:   Running setup.py bdist_wheel for pycparser: started
Step #1:   Running setup.py bdist_wheel for pycparser: finished with status 'done'
Step #1:   Stored in directory: /root/.cache/pip/wheels/c0/a1/27/5ba234bd77ea5a290cbf6d675259ec52293193467a12ef1f46

...

Step #1: You are using pip version 9.0.3, however version 18.0 is available.
Step #1: You should consider upgrading via the 'pip install --upgrade pip' command.
Step #1: Removing intermediate container 17479e57bb65
Step #1:  ---> de0f0b2489b2
Step #1: Step 8/9 : ADD . /app/
Step #1:  ---> 6e2b69d889c7
Step #1: Step 9/9 : CMD exec honcho start -f /app/procfile worker monitor
Step #1:  ---> Running in 8256a2f788ad
Step #1: Removing intermediate container 8256a2f788ad
Step #1:  ---> ead6fd829437
Step #1: Successfully built ead6fd829437
Step #1: Successfully tagged asia.gcr.io/trans-envoy-212309/appengine/worker.20180805t173335:latest
Finished Step #1
PUSH
Pushing asia.gcr.io/trans-envoy-212309/appengine/worker.20180805t173335:latest
The push refers to repository [asia.gcr.io/trans-envoy-212309/appengine/worker.20180805t173335]

.....

latest: digest: sha256:26b3e02b5f9b44adbec8e386387dd7453803fe8306e4aa13c0de6c60c3b43e03 size: 3666
DONE
--------------------------------------------------------------------------------------------------------------------------------------

Updating service [worker] (this may take several minutes)...failed.                                                                  
ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:
12:07:22 system    | worker.1 started (pid=7)
12:07:22 system    | monitor.1 started (pid=8)
12:07:22 monitor.1 |  * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
12:07:24 worker.1  | INFO     2018-08-05 12:07:24,090 psq.worker Listening for tasks, press Ctrl+C to exit.
12:07:24 worker.1  | Listening for tasks, press Ctrl+C to exit.
12:07:24 worker.1  | INFO     2018-08-05 12:07:24,761 psq.queue Creating shared subscription psq-books-shared
12:07:24 worker.1  | Creating shared subscription psq-books-shared
12:07:25 worker.1  | Traceback (most recent call last):
12:07:25 worker.1  |   File "/env/bin/psqworker", line 11, in <module>
12:07:25 worker.1  |     sys.exit(main())
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/click/core.py", line 722, in __call__
12:07:25 worker.1  |     return self.main(*args, **kwargs)
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/click/core.py", line 697, in main
12:07:25 worker.1  |     rv = self.invoke(ctx)
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/click/core.py", line 895, in invoke
12:07:25 worker.1  |     return ctx.invoke(self.callback, **ctx.params)
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/click/core.py", line 535, in invoke
12:07:25 worker.1  |     return callback(*args, **kwargs)
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/psq/psqworker.py", line 105, in main
12:07:25 worker.1  |     worker.listen()
12:07:25 worker.1  |   File "/env/lib/python3.6/site-packages/psq/worker.py", line 37, in listen
12:07:25 worker.1  |     subscriber.future.result()
12:07:25 worker.1  | AttributeError: 'StreamingPullFuture' object has no attribute 'future'
12:07:25 worker.1  | Waiting up to 5 seconds.
12:07:25 worker.1  | Sent all pending logs.
12:07:25 system    | worker.1 stopped (rc=1)
12:07:25 system    | sending SIGTERM to monitor.1 (pid 8)
12:07:25 system    | monitor.1 stopped (rc=-15)

看起来像这个问题:https://github.com/GoogleCloudPlatform/psq/issues/39

好像是版本不兼容。可能在 requirements.txt psq==0.7.0

中升级 psq