我希望将我的Django服务器的输出以及Django管理命令全部写入同一文件。这很容易在settings.py文件中设置,但是对于线程安全或使用管理命令(通过命令行运行)试图写入与主Django服务器相同文件的文件锁定是否存在任何问题(从wsgi运行)?在Windows,Linux或其他操作系统下运行此设置是否有任何担忧?
在不同版本中有不同答案的情况: python 3.4 Django 1.11
谢谢!
答案 0 :(得分:0)
根据Python 3 Logging Cookbook:“不支持从多个进程登录到单个文件,因为没有标准方法可以在Python中跨多个进程序列化对单个文件的访问”
由于Django中的日志记录似乎是默认的Python日志记录程序包,因此我只能假定它并不意味着可以同时从主服务器和命令进行访问。
答案 1 :(得分:0)
另一种选择是将所有日志记录发送到队列(例如Redis队列),然后由单个进程读取该队列并将记录写入文件。这里可能有更多需要考虑的问题,因此这可能适合您的需求,也可能不适合,但是它将消除文件锁定。