私はLinux上で動作するPythonアプリケーションを持っています。 cronから毎分呼び出されます。ディレクトリのファイルをチェックし、ファイルが見つかった場合はそれを処理します。これには数分かかることがあります。私は次のcronジョブが現在処理中のファイルを受け取ることを望んでいないので、以下のコードを使用してロックします。問題は、それがうまくいかないことです。次のcronジョブは、処理可能なすべてのファイルに対して返されたファイルハンドルを取得します。Python:ファイルをロックする
def open_and_lock(full_filename):
file_handle = open(full_filename, 'r')
try:
portalocker.lock(file_handle, portalocker.LOCK_EX
| portalocker.LOCK_NB)
return file_handle
except IOError:
sys.exit(-1)
他のプロセスがそれを取得できないようにファイルをロックするために何ができるのですか? @Winstonエバートへ
UPDATE
おかげで私は、コードをチェックし、処理が終わっていた前に、ファイルハンドルが閉じられた方法であることがわかりました。これは、例外を投げるのではなく、portalocker.lockの2番目のプロセスブロックを除いて現在動作しているようです。
ファイルをロックする管理プロセスはありますか。 –
私はこの呼び出しから返され、ファイルを読み取るのでyesと言うことができます – Ambrosio
この関数から返されるファイルハンドルはどうしますか? –