相互保护共享文件访问

时间:2018-11-28 16:05:46

标签: python bash ssh

我正在用python编写RunManager,它应该在远程服务器上调度任务(使用SSH。每个任务都是一个进程)。

对于调度,我在远程服务器上使用一个共享的 slots 文件,该文件表示该服务器上的可用插槽数。

现在,每个用户都运行RunManager的实例,因此可能会并行访问插槽文件。我有办法原子地增加/减少插槽数(防止竞争状态)吗?

在Google上搜索“相互保护共享文件”会产生极其不相关的结果。

1 个答案:

答案 0 :(得分:2)

This helpful SO question详细介绍了在Python中锁定文件的几种可能方式,但是很多答案都指出了可靠地这样做的难度(很多地方可能出错)。

我建议您使用内存存储(例如Redis)或数据库,然后您的每个进程都可以与之对话。另一个选择是拥有另一个控制读写的过程,并与其他过程进行通信,但这是相当多的工作,并且从根本上说就是最终成为数据库服务器。

在我看来,这是一种情况,您应该只使用正确的工具进行工作(数据库)。