请教一下关于 celery 子进程(worker),被 kill 的问题

2020-01-15 22:22:05 +08:00
 bxqqq
因为不熟悉 celery,所以请教下,项目中执行 task 的时候,主进程会启用子进程(worker)去跑 task,在子 worker 内存占用过高的情况下,会被 kill 掉吗,这种情况下主进程是否会收到信号之类的东西,或者有什么设置,能让主进程知道子 worker 被 kill。还有就是我手动 kill 掉一个子 woker,主进程能够知道吗?
2843 次点击
所在节点    Python
5 条回复
billlee
2020-01-15 23:30:23 +08:00
1. 主进程知道子进程被 kill.
2. ( Linux 下)内存占用过高的情况下,内核会开始 kill 进程,被 kill 掉的不一定是 worker 进程。但在内核开始 kill 进程之前,你的系统可能已经变得非常慢。所以不要过度使用内存。
SpencerCJH
2020-01-16 01:35:20 +08:00
蹲一波=大神答,我以前想用 Celery 做一些事情后来换到 APScheduler 了
cz5424
2020-01-16 08:39:51 +08:00
被 kill 之后任务就失败了
fxxkgw
2020-01-16 16:12:21 +08:00
这样是否可行:子进程设置 signal 函数捕捉父进程或者内核发送的 kill 信号,捕捉后,设置 redis 里 key 的 value。
bxqqq
2020-01-16 19:25:50 +08:00
谢谢 @fxxkgw 我朝这个思路试一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/638267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX