我找不到在Django中锁定关键部分的好方法。我可以使用锁或信号灯,但python实现仅适用于线程,因此,如果生产服务器派生,则将不遵守这些要求。有谁知道一种方法(我现在正在考虑posix信号量)来确保跨进程的锁定,或者禁止这种方法来阻止Django服务器派生。
当你的应用突然需要在多个服务上运行时,你需要一个分布式锁管理器。我为此目的写了elock。有更大的建议,而其他人则选择忽略每个建议,并使用memcached做同样的事情。
除轻型建议锁定外,请勿将memcached用于其他用途。它旨在遗忘东西。
我喜欢假装在制作Web应用程序时文件系统不存在。使规模更好。
如果使用RDBMS,则可以使用其“ LOCK”机制。例如,当一个“ SELECT FOR UPDATE”事务锁定一行时,与此行的另一个“ SELECT FOR UPDATE”事务必须等待。
# You can use any Python DB API. [SQL] BEGIN; [SQL] SELECT col_name FROM table_name where id = 1 FOR UPDATE; [Process some python code] [SQL] COMMIT;