python - Celery 池进程、任务和系统进程和内存空间
问题描述
每个任务都在一个独特的进程空间中执行?
- 芹菜池(不是主)进程是否为每个任务执行产生一个进程?
- 换句话说,每个任务执行是通过一个由工作池进程产生的新进程吗?
还是相反?
- 任务作为工作池进程的一部分执行?
- 这意味着:如果 celery 任务依赖于存储在进程内存空间中的数据,则该数据是正在执行它的工作池进程的一部分。并且,工作池进程执行的所有任务都可以访问该数据副本。
解决方案
这些详细信息取决于您为工作人员选择的并发模型。
在默认的 prefork 模型(基于进程)中,每个任务都在一个 prefork 进程(工作进程)中执行。所以是的 - 它是一个进程池。您可以配置 Celery 为每个任务创建一个新的工作进程,但这不是默认行为。默认情况下,Celery 不会用新的工作进程替换旧的工作进程,但您可以通过worker_max_tasks_per_child设置来控制它。
推荐阅读
- javascript - 为什么我的正则表达式不能与 Validators.pattern 一起使用?
- javascript - 如何使用 href 提交表单并将隐藏值发送到控制器
- postgresql - Trouble connecting to SQL database in Jupyter Notebook
- excel - Function Calculations with Table Objects
- php - 如何通过定义特定键来访问 php 中嵌套数组中的所有值?
- shell - 如何找到第n个字符串的行号,打印并将其存储到makefile中的变量中?
- java - How to map AtomicLong in MyBatis?
- pip - pip install fails when installing mlflow
- amazon-web-services - Javascript - Cannot initialize a AWS Textract object with AWS-SDK
- javascript - 仅在类悬停时添加 javascript 脚本