как поставить таймаут на работу qnetworkaccessmanager? (python, pyqt)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Дикс, 21 Mar 2011.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    есть такой код, скачивающий страничку:
    PHP:
            self.loop QEventLoop()

            if 
    data.strip():
                
    self.replyself.conn.post(requestdata)
            else:
                
    self.replyself.conn.get(request)

            
    QtCore.QObject.connect(self.replyQtCore.SIGNAL("finished()"),  self.loop.quit);
            
    self.loop.exec()
    собственно, как сделать какой-то таймаут, чтобы он не зависал на неотвечающих серверах? (подозреваю что из-за этого виснет и поток, выполняющий этот код)

    нашёл что-то про qtimer здесь
    http://stackoverflow.com/questions/2668519/qnetworkaccessmanager-timeout

    как я понимаю, надо привязать сигнал QNetworkReply.downloadProgress к чему-то

    потом поставить таймер на 15 сек, так чтобы он начинался при начале скачивания

    соответственно, каждый вызов downloadProgress должен продлять таймер ещё на 15 сек и если скачивание прекратилось - соответственно, таймер сделает self.loop.quit

    откуда весь этот геморрой?
    почему в курле достаточно CURLOPT_TIMEOUT, 15?


    стоит ли делать подобное извращение или есть способ попроще?