Python 个线程 运行 在 Docker 容器中是并行的,但是 运行 当容器在 Google 云 运行 上 运行 时是顺序的

Python threads run in parallel when in Docker container, but run sequentially when container is run on Google Cloud Run

首先 post 在 SO 上,让我知道如何改进我的问题。

1。摘要

目标:我的应用程序是一个 Craigslist 抓取工具,它会找到新的 posts 并将提要发送到用户的电子邮件。它有一个始终侦听请求的主线程,以及一个由主线程管理的工作线程,并且正在工作或休眠。

预期与实际结果:如标题所述,该应用程序在本地容器中运行良好,但当它托管在云 运行 上时,工作线程的输出和 side-effects 是推迟到工作线程被终止。

似乎工作线程只在主线程调用杀死它时才启动,此时工作线程只执行一次它的工作迭代然后杀死自己。

没有错误消息。

2。我试过的。

我试过更改一些 Cloud 运行 容器环境设置,例如增加内存量和 vCPU 数量。

settings

请让我知道哪些附加信息会有所帮助。

这个设置解决了问题:

教训:始终检查所有设置。

除非您为 Cloud 运行 启用 No CPU Throttling,否则您不能使用后台线程。

请参阅本文了解支持您的工作负载的最新功能:

Run more workloads on Cloud Run with new CPU allocation controls

Documentation

总之添加此命令行选项:--no-cpu-throttling

gcloud beta run services update SERVICE-NAME --no-cpu-throttling

同时设置CPU的个数大于--cpu=N