Python で CGI の排他ロック
2007-08-11 作成 福島
2020-08-08 更新 福島
2022-11-22 更新 福島
TOP > cgi > python-exlock
排他ロックなんて、いまさら公開するまでも無いですが、無くすたびに思い出すのが面倒なのでここに書いておきます。
ちなみに、ロックファイルにはディレクトリを使用しているので Unix、Windows を問わず使えます。
商用/非商用を問わず、自由にコピーして使ってください。

最近、サーバにも SSD を使うことが増えてきました。
SSD のシステムではストレージに負荷をかけないよう、ロックファイルの保存先として
Linux では tmpfs を、Windows では RAM ディスクを使用してください。

exLock.py 文字コードは UTF-8 です。

使い方は、./lock_tmp/ (777) というディレクトリを作成したとして、こんな感じ
import exLock

lock = exLock.exLock("./lock_tmp/lockDir.LCK")

lock_success = lock.lock()
if lock_success == True:

	'''ロック中に実行する処理'''

lock.unlock()          --- 通常は書かない (A)
(A) は CGI の場合、プロセスの終了時にデストラクタが呼ばれるので、書く必要が無いという意味です。
正確には、スコープが切れるときにデストラクタが呼ばれます。
まあ、プログラムを見ればすぐに分かりますね。