【发布时间】:2019-01-30 11:44:19
【问题描述】:
我有一个 python Django 管理命令,应该在接收到输入文件时调用,但是这个命令对于并行调用是不安全的。因此,只有在没有其他文件正在处理时,才应处理输入文件。
我有一个解决方案是使用锁定文件。基本上,在进程开始时创建一个锁定文件并在结束时将其删除。
我担心如果进程崩溃,锁定文件将不会被删除,因此在我们手动删除该锁定文件之前不会处理任何其他文件。
该解决方案不需要特定于 Django 甚至 python,但是强制只运行此进程的一个实例的最佳做法是什么?
【问题讨论】:
-
将pid写入lockfile并检查pid是否存在。
-
@KlausD。是否有可能进程崩溃而另一个进程获取相同的 pid?
标签: python django python-3.x concurrency lockfile