|
kleshDec 13, 2018 via Android
1
线程不安全? GIL 了解一下?难道你用的不是 cpython?
|
|
silkriverDec 13, 2018
3
用 async/await 保证线程安全
|
|
lolizeppelinDec 13, 2018
6
python 这种不能用多核的渣渣 压缩不想办法 fork 到其他进程里干 你想卡死当前进程么
再说了 python 性能这么烂 需要经常压缩的话直接 shell 执行是性能最好的, 条件允许能不用 native 代码去压缩就不要用 python 去压文件 |
|
richzhuDec 13, 2018 via iPhone
8
@lolizeppelin 是有多烂,是准备写航空母舰吗
|
|
silkriverDec 13, 2018
9
Python 当然能用多核,开多进程就可以了,GIL 只是说一个进程内开多线程不能用多核
|
|
neoblackcapDec 13, 2018
10
@miniyao zipfile 不是很了解,但是你的 celery 不是默认多进程吗?有什么问题,将异常信息写上来。标题一句话,内容全靠猜?
|
|
hoteaDec 13, 2018
11
celery 有多个模式, prefork (default), eventlet, gevent or solo. 在默认 prefork 模式下开 worker 是多进程,资源都不共享,不存在线程安全问题吧?
|
|
12
@klesh
@Trim21 @silkriver @lolizeppelin @lolizeppelin @richzhu @silkriver @neoblackcap @hotea 参考大家的建议,本地也测试过,情况是这样的: 本地开发环境,单线程直接启动 celery 运行 zipfile 正常;生产环境是多 worker,这个任务里还有个 for 循环,只运行了第一个 loop 就熄火了。(所以整个任务是没有执行完成的,现在先用 thread 扛着在用,线上 celery 的故障还没有找出来) |
|
lolizeppelinDec 13, 2018
13
|
|
lolizeppelinDec 13, 2018
14
|
|
myyouDec 13, 2018
16
是不是开的线程太多,导致一次打开的文件 io 太多超过了系统的 net.core.somaxconn 的大小?
|