suchen

Heim  >  Fragen und Antworten  >  Hauptteil

python 2.7记录日志的问题IOError: [Errno 24] Too many open files

伊谢尔伦伊谢尔伦2803 Tage vor1212

Antworte allen(4)Ich werde antworten

  • PHPz

    PHPz2017-04-18 10:09:15

    fh =logging.FileHandler(BASE_DIR+'/log/'+username+'_'+GetNowTime()+'_'+str(random.random())+'.log')
    
    这个你每一次创建的handler对象有没有调用`fh.close()`来清除此hander的所拥有的资源。
    

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:09:15

    打开太多文件了,一般来说默认是最多1024个文件
    你需要把这个值改大,验证多少可以执行 ulimit -a ,看里面的"open files"
    更多可以参考: http://askubuntu.com/question...

    Antwort
    0
  • 阿神

    阿神2017-04-18 10:09:15

    logger = logging.getLogger('mylogger'+str(time.time()))
    这句有问题,你没跑一次get_task2都会获得一个文件句柄,跑多了当然就超了!

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-18 10:09:15

    logger = logging.getLogger('mylogger'+str(time.time()))
    

    这样的写法本来就不好,潜在风险太高了。每个请求单独生成一个日志,太不合理了。linux系统本身对一个目录下的文件数也是有限制的,请求一多,一下子就达到上限出错了。

    至于handler有没有关闭都顶多只能说是编程错误,但每个请求单独一个日志,完全就是思考的方式错误了。

    Antwort
    0
  • StornierenAntwort