私は自分で解決できない奇妙な問題があります。Python:例外をキャッチすることは、関数の外では機能しますが、関数内では機能しません。
Iは、2つの別々の端子にoutside_func.py
を実行する場合、第二実行がBlockingIOError例外をキャッチし、メッセージが印刷される。
outside_func.py
import fcntl
import time
# Raise BlockingIOError if same script is already running.
try:
lockfile = open('lockfile', 'w')
fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
except BlockingIOError:
print('Script already running.')
time.sleep(20)
Iはinside_func.py
何も同じことを行う場合にキャッチされ、メッセージは印刷されません。
inside_func.py
import fcntl
import time
# Raise BlockingIOError if same script is already running.
def script_already_running():
try:
lockfile = open('lockfile', 'w')
fcntl.flock(lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
except BlockingIOError:
print('Script already running.')
script_already_running()
time.sleep(20)
この問題を再現するコードです。 –
あなたが気づいていない投稿コードの外で変更したものに問題があるような音は重要でした。 – user2357112
例を更新しました。今問題は再現可能でなければなりません。 – Rotareti