【问题标题】:Django logging thread safety between server and commandsDjango记录服务器和命令之间的线程安全
【发布时间】:2018-10-30 18:33:15
【问题描述】:

我希望 Django 服务器的输出以及 Django 管理命令都写入同一个文件。这很容易在 settings.py 文件中设置,但是对于线程安全或文件锁定是否存在任何问题,管理命令(从命令行运行)试图写入与主 Django 服务器相同的文件(从wsgi运行)?在 Windows 与 Linux 或其他操作系统下运行此设置有什么问题吗?

如果不同版本有不同的答案: 蟒蛇3.4 Django 1.11

谢谢!

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    根据 Python 3 Logging Cookbook:“不支持从多个进程记录到单个文件,因为在 Python 中没有标准的方法来序列化跨多个进程对单个文件的访问”

    由于 Django 中的日志记录似乎是默认的 Python 日志记录包,我只能假设它不能同时从主服务器和命令访问。

    【讨论】:

      【解决方案2】:

      另一种方法是将所有日志记录发送到队列(例如 Redis 队列),然后单个进程读取队列并将记录写入文件。这里可能需要考虑更多内容,因此这可能适合也可能不适合您的需求,但它会消除文件锁定。

      【讨论】:

      • 谢谢 - 这与日志记录手册中的内容非常相似
      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2013-02-01
      • 2011-02-26
      相关资源
      最近更新 更多