Python Docker&x2B;pubsub&x2B;子进程挂起,没有错误
我在docker容器中运行pubsub,几分钟后遇到挂起。我在docker之外使用类似的命令运行了pubsub,没有发现挂起(运行了一年多) 我能够通过下面概述的简化实现重现我的问题 以下四个文件(docker文件、requirements.txt、worker.py、test.py)放置在同一目录中。它们位于本要点中。基本上,worker.py正在调用一个子流程函数,该函数调用test.py来运行time.sleep(3) 为了构建docker文件,我将Dockerfile、requirements.txt、worker.py和test.py放入一个目录并运行:Python Docker&x2B;pubsub&x2B;子进程挂起,没有错误,python,docker,grpc,publish-subscribe,google-cloud-pubsub,Python,Docker,Grpc,Publish Subscribe,Google Cloud Pubsub,我在docker容器中运行pubsub,几分钟后遇到挂起。我在docker之外使用类似的命令运行了pubsub,没有发现挂起(运行了一年多) 我能够通过下面概述的简化实现重现我的问题 以下四个文件(docker文件、requirements.txt、worker.py、test.py)放置在同一目录中。它们位于本要点中。基本上,worker.py正在调用一个子流程函数,该函数调用test.py来运行time.sleep(3) 为了构建docker文件,我将Dockerfile、requirem
docker build --tag=test .
要运行docker文件,我执行了以下操作:
docker run -it \
-e GOOGLE_APPLICATION_CREDENTIALS=/keys/service-account.json \
-e GRPC_ENABLE_FORK_SUPPORT=false \
-e GRPC_VERBOSITY=debug \
-e GRPC_TRACE=all \
-v /tmp/keys/:/keys/:ro \
-v /tmp/logs:/logs \
test:latest bash
文件service-account.json保存我的pubsub密钥
我在Mac电脑上运行docker,但我在kubernetes和运行docker的Ubuntu18.04机器上也经历过同样的挂起。问题是,几分钟后,pubsub订户变得没有响应。上述代码在没有docker的虚拟环境中完美运行
文件(在gist中)publish_output.txt是我的pubsub publisher输出的日志文件,并包含消息ID
文件subscriber_output.txt(在gist中)是订阅者日志输出。我将GRPC_TRACE设置为all,将GRPC_VERBOSITY设置为debug。
最后成功接收的消息是消息ID 1253690400552289(subscriber_output.txt的第9338行)。pubsub未收到1253713007710668、1253714609061509、1253713464329969及以上消息
我还需要做其他设置吗?不幸的是,我正在从Python中运行自定义C++代码,所以我需要使用子进程。
我的docker配置中的当前python包:
CacheControl 0.12.6
cachetools 4.1.0
certifi 2020.4.5.1
chardet 3.0.4
firebase 3.0.1
firebase-admin 4.3.0
firestore 0.0.8
google-api-core 1.18.0
google-api-python-client 1.9.1
google-auth 1.16.1
google-auth-httplib2 0.0.3
google-cloud-core 1.3.0
google-cloud-firestore 1.7.0
google-cloud-logging 1.15.0
google-cloud-pubsub 1.5.0
google-cloud-storage 1.28.1
google-resumable-media 0.5.1
googleapis-common-protos 1.52.0
grpc-google-iam-v1 0.12.3
grpcio 1.29.0
httplib2 0.18.1
idna 2.9
iso8601 0.1.12
msgpack 1.0.0
pip 20.1.1
protobuf 3.12.2
pyasn1 0.4.8
pyasn1-modules 0.2.8
pytz 2020.1
requests 2.23.0
rsa 4.0
setuptools 46.4.0
six 1.15.0
uritemplate 3.0.1
urllib3 1.25.9
wheel 0.34.2
感谢您的帮助
谢谢 问题似乎出在谷歌核心api上 我通过以下建议解决了这个问题: requirements.txt基本上应使用以下版本:
google-api-python-client <= 1.8.4
google-api-core <= 1.16.0
googleapi python客户端