Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从多进程记录损坏的文件?_Python_Logging_Gunicorn_Python Logging - Fatal编程技术网

Python 从多进程记录损坏的文件?

Python 从多进程记录损坏的文件?,python,logging,gunicorn,python-logging,Python,Logging,Gunicorn,Python Logging,我使用Django通过gunicorn提供服务,有四个gevent工作人员,并且有一些日志记录配置,特别是它使用RotatingFileHandler。python文档说明: 尽管日志记录是线程安全的,并且支持从单个进程中的多个线程记录到单个文件,但不支持从多个进程记录到单个文件,因为Python中没有标准的方法可以跨多个进程序列化对单个文件的访问 因此,在我当前的配置中,gunicorn只有一个父进程,并且有一些线程,因此日志记录不会损坏文件,但在我的生产中,备份文件已损坏,但无法在本地设置中

我使用Django通过gunicorn提供服务,有四个gevent工作人员,并且有一些日志记录配置,特别是它使用
RotatingFileHandler
。python文档说明:

尽管日志记录是线程安全的,并且支持从单个进程中的多个线程记录到单个文件,但不支持从多个进程记录到单个文件,因为Python中没有标准的方法可以跨多个进程序列化对单个文件的访问

因此,在我当前的配置中,gunicorn只有一个父进程,并且有一些线程,因此日志记录不会损坏文件,但在我的生产中,备份文件已损坏,但无法在本地设置中再现这种情况


我应该假设配置很好并继续使用它,还是应该采用不同的方法(例如,
多处理.Queue
SocketHandler
)?

如果您有四个事件工作程序,这意味着有四个不同的进程进行请求处理和日志记录——因此您可能应该使用所述的
SocketHandler
。我通常使用运行侦听器进程。

gevent工作人员使用不同的进程进行侦听?我以为gunicorn会启动一个主进程,并根据需要生成gevent的尽可能多的工作人员。@MaskedMan是的,请看哦,谢谢,很高兴在这里见到您(python日志记录包的作者!)