【发布时间】:2018-10-30 18:33:15
【问题描述】:
我希望 Django 服务器的输出以及 Django 管理命令都写入同一个文件。这很容易在 settings.py 文件中设置,但是对于线程安全或文件锁定是否存在任何问题,管理命令(从命令行运行)试图写入与主 Django 服务器相同的文件(从wsgi运行)?在 Windows 与 Linux 或其他操作系统下运行此设置有什么问题吗?
如果不同版本有不同的答案: 蟒蛇3.4 Django 1.11
谢谢!
【问题讨论】:
我希望 Django 服务器的输出以及 Django 管理命令都写入同一个文件。这很容易在 settings.py 文件中设置,但是对于线程安全或文件锁定是否存在任何问题,管理命令(从命令行运行)试图写入与主 Django 服务器相同的文件(从wsgi运行)?在 Windows 与 Linux 或其他操作系统下运行此设置有什么问题吗?
如果不同版本有不同的答案: 蟒蛇3.4 Django 1.11
谢谢!
【问题讨论】:
根据 Python 3 Logging Cookbook:“不支持从多个进程记录到单个文件,因为在 Python 中没有标准的方法来序列化跨多个进程对单个文件的访问”
由于 Django 中的日志记录似乎是默认的 Python 日志记录包,我只能假设它不能同时从主服务器和命令访问。
【讨论】:
另一种方法是将所有日志记录发送到队列(例如 Redis 队列),然后单个进程读取队列并将记录写入文件。这里可能需要考虑更多内容,因此这可能适合也可能不适合您的需求,但它会消除文件锁定。
【讨论】: