2016-11-30 7 views
-2

私はtwitter auto retweet botを使用しています.20分後にボットが停止し、ときどき停止しないこともあります。この問題を解決するために、私はcrontabを使用して20分ごとにプログラムを再実行しています。Crontabは同じ.pyの複数のインスタンスを実行しています

*/20 * * * * /home/TwitterFollowBot/bot.py 2>/tmp/twitterBot.log 

しかし、crontabファイルは、別のインスタンスごとに20分を開始するので、ボットは、それは2Xを実行している20分以内に停止しなかった場合には問題があります。そして、ボットが止まらなければ、これは起き続けるでしょう。時にはそれが限界よりもリツイートを意味する10Xを実行しています。だから私がする必要があるのは、19分ごとにall/this bot.pyを殺すことです.20分に新鮮なbot.pyが実行されます。

bot.py

#!/usr/bin/env python 

from TwitterFollowBot import TwitterBot 
my_bot = TwitterBot("/home/TwitterFollowBot/config.txt") 
my_bot.sync_follows() 
my_bot.auto_rt("@SupStreamers", count=2200) 
my_bot.auto_rt("@#SupportSmallStreamers", count=2200) 
my_bot.auto_rt("@Small_Streamers", count=2200) 
+0

スクリプトが実行されているかどうかを示すロックファイルはどうでしょうか? – fedorqui

+0

これは古典的な[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のようです。なぜあなたは、クラッシュする前にあなたのボットを殺すかを理解しようとするのではなく、最初の20分後に時々クラッシュする理由を理解しようとしますか?それはもっと理にかなっています。 – Phillip

+0

それは私の問題を解決すると思いますか?もしティが止まったら?私はそれを手動で正しく実行する必要がありますか?つまり、20分ごとにVPSをチェックする必要があります。私が間違っているなら私を訂正してください。 –

答えて

1

cronは、ここで適切なツールではありません。スーパーバイザ、systemd、monit、upstartなど、システムがまだ稼働していることを確認し、再起動しない場合は再起動するシステムがたくさんあります。これらのいずれかがより適しています。

+0

どちらが一番簡単なのですか?私は非常に基本的な知識を持っているからです。 –

0

あなたは、現在アクティブなpythonスクリプトを読み込むコントローラの先頭にコントローラを配置します。同じスクリプトがすでに実行されている場合は、何もしないようにスクリプトに指示します。

私はRegexを使用しています。あなたは正規表現が嫌いなら、あなたは何でも好きなものを使用できます。

import os, commands, subprocess, re 

def find(pat, string): 
    match = re.search(pat, string) # find function for searches below 
    if match: 
     return match.group() 
    else: 
     return None 

allProcessIDs = os.popen('pgrep -lf python').read() 
sameProcessID = find('\d{7} python YourApplicationName.py', allProcessIDs) 
if sameProcessID: 
    raise Systemexit 
+0

ありがとう!だから、私が必要とするのは、このコードをコピーしてPythonの上に貼り付けることだけです。これを "#!/ usr/bin/env python"またはこれより下に置く必要がありますか? 、ライン24 ^ にSyntaxErrorを/ホーム/ TwitterFollowBot#pythonのbot.py ファイル "bot.py":************** - –

+0

私はこのエラー ルート@ IPを​​取得します無効な構文 –

+0

通常のコードの直前でシバンの下に置きます。これは、私が生産しているコードからのスナップです。いくつかの問題がある場合は、コードを貼り付けて、どこに実装しましたか。また、スペースの代わりにタブを使用することに注意してください。 PEP8 hah .. –

関連する問題