Python 线程在 Docker 容器中并行运行,但在容器在 Google Cloud Run 上运行时按顺序运行
Posted
技术标签:
【中文标题】Python 线程在 Docker 容器中并行运行,但在容器在 Google Cloud Run 上运行时按顺序运行【英文标题】:Python threads run in parallel when in Docker container, but run sequentially when container is run on Google Cloud Run 【发布时间】:2022-01-04 01:45:36 【问题描述】:关于 SO 的第一篇文章,让我知道如何改进我的问题。
1。总结
目标:我的应用是 Craigslist 抓取工具,它会查找新帖子并将提要发送到用户的电子邮件。它有一个始终监听请求的主线程和一个由主线程管理的工作线程,工作或休眠。
预期与实际结果:如标题所述,该应用在本地容器中运行良好,但当它托管在 Cloud Run 上时,工作线程的输出和副作用会延迟到工作线程被杀死。
似乎工作线程只有在主线程调用杀死它时才启动,此时工作线程只执行一次它的工作迭代然后杀死自己。
没有错误消息。
2。我试过了。
我尝试更改一些 Cloud Run 容器环境设置,例如增加内存量和 vCPU 数量。settings
请告诉我哪些附加信息会有所帮助。
【问题讨论】:
【参考方案1】:设置这个解决了问题:
课程:始终检查所有设置。
【讨论】:
【参考方案2】:除非您为 Cloud Run 启用 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
【讨论】:
以上是关于Python 线程在 Docker 容器中并行运行,但在容器在 Google Cloud Run 上运行时按顺序运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python3.7 docker 容器中执行并行 PostgreSQL 查询?