因为不熟悉 celery,所以请教下,项目中执行 task 的时候,主进程会启用子进程(worker)去跑 task,在子 worker 内存占用过高的情况下,会被 kill 掉吗,这种情况下主进程是否会收到信号之类的东西,或者有什么设置,能让主进程知道子 worker 被 kill。还有就是我手动 kill 掉一个子 woker,主进程能够知道吗?
1
billlee Jan 15, 2020
1. 主进程知道子进程被 kill.
2. ( Linux 下)内存占用过高的情况下,内核会开始 kill 进程,被 kill 掉的不一定是 worker 进程。但在内核开始 kill 进程之前,你的系统可能已经变得非常慢。所以不要过度使用内存。 |
2
0dJ6Tu8Za734L89T Jan 16, 2020
蹲一波=大神答,我以前想用 Celery 做一些事情后来换到 APScheduler 了
|
3
cz5424 Jan 16, 2020 via iPhone
被 kill 之后任务就失败了
|
4
fxxkgw Jan 16, 2020
这样是否可行:子进程设置 signal 函数捕捉父进程或者内核发送的 kill 信号,捕捉后,设置 redis 里 key 的 value。
|