4

pycurl 永続接続での切断はどこで確認すればよいですか?

スクリプトのどこかで、接続が切れている/タイムアウトになっている/エラーが発生していますが、スクリプトは開いたままです。スクリプトを再起動できるように、問題を検出する必要があります。

gnip (ソーシャル メディア データ プロバイダー) に接続しています。

私のコードはここにあります: https://gist.github.com/3353033

libcurl のオプションを読み、php curl_setopts のドキュメントも読みました。これらも libcurl を利用しているためです。

class Client:  
    time_start = time.time()
    content = ""
    def __init__(self,options):
        self.options = options  
        self.buffer = ""  
        self.conn = pycurl.Curl()  
        self.conn.setopt(pycurl.USERPWD, "%s:%s" % (USER, PASS))  
        self.conn.setopt(pycurl.ENCODING,'gzip')
        self.conn.setopt(pycurl.URL, STREAM_URL)  
        self.conn.setopt(pycurl.WRITEFUNCTION, self.on_receive)  
        self.conn.setopt(pycurl.FOLLOWLOCATION,1)
        self.conn.setopt(pycurl.MAXREDIRS, 5)
        self.conn.setopt(pycurl.COOKIEFILE,"cookie.txt")
        try:
            self.conn.perform()  
        except Exception,e:
            print e.message

    def on_receive(self, data):
        self.buffer += data  

        if data.endswith("\r\n") and self.buffer.strip():  
            if(self.triggered()):
                if(len(self.buffer) != 0 ):
                    try:
                        SaveThread(self.buffer).start()
                    except Exception, e:
                        print "something i commented would have told you there was an error"
                        system.exit(1) 
                self.buffer = ""

    def triggered(self):
        # First trigger based on size then based on time..
        if (len(self.buffer) > SAVE_FILE_LENGTH):
            return True
        time_end = time.time()
        if (((time_end - self.time_start) > ROLL_DURATION)):  #for the time frame 
            self.time_start=time.time()
            return True
        return False

編集:要点を修正しました

4

1 に答える 1

0

上記のコードで正しいsystem.exit(1)はずsys.exit(1)ですか?

それ以外に、によって発生した例外exceptをキャッチしている可能性のある裸の句はありますか?SystemExitsys.exit(1)

于 2012-08-14T21:52:09.220 に答える