8

マシン上で 1 回だけ実行できるようにしたい Python スクリプトがあります。バックグラウンドで実行されているか、別の ssh セッションで実行されているかに関係なく、既に実行されている場合は、「エラー、既に実行中です」のようなものを出力します。どうすればいいですか?これが私のスクリプトです。

import urllib, urllib2, sys
num = sys.argv[1]
print 'Calling'
phones = [
'http://phone1/index.htm',
'http://phone2/index.htm',
'https://phone3/index.htm',
'https://phone4/index.htm',
'https://phone5/index.htm'
]
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1: 
    for phone in phones:
        try:
            urllib2.urlopen(phone,data) # make call
            urllib2.urlopen(phone+"?dialeddel=0") # clear logs
        except: pass

PSそれが重要な場合、私はCentOS 5を使用しています。

4

3 に答える 3

3

古いロック ファイルを残さずにコマンドの 1 つのインスタンスのみが実行されるように、アドバイザリ ロックを使用する1 つのパッケージをインストールできます。pip install single

次のようにスクリプトで呼び出すことができます。

single.py -c long-running-script arg1 arg2
于 2012-09-02T23:00:01.977 に答える
3
  1. ファイルにロックを実装できます。
  2. 実行の開始時に一時ファイルを作成し、スクリプトを実行する前にそのファイルが存在するかどうかを確認します。

回答については、この投稿を参照してください。Python スクリプトが実行されているかどうかを確認してください。

于 2012-09-01T21:57:35.930 に答える
0

スクリプトの開始時にflockなどを使用して、既存のファイルをロックできます。次に、同じスクリプトが 2 回実行されると、最後に開始されたスクリプトがブロックされます。この質問も参照してください。

于 2012-09-01T22:06:18.797 に答える