0

ネットワークのタイムアウト値を下げるように構成するにはどうすればよいでしょうか?QWebViewネットワーク障害が発生した場合に、値と適切なエラー条件を設定loadFinished(bool ok)して、信号がより早く到達できるようにするにはどうすればよいでしょうか?false

異なるタイムアウトを異なる方法で処理するためのボーナスポイント

4

1 に答える 1

4

標準エラーとページの読み込みが成功すると、前と同じ方法で loadFinished がトリガーされますが、カスタム タイマーが web ページの読み込みを停止し、ok=False で loadFinished をトリガーします。

class Browser(object):

    def __init__(self):
        self.web_view = QWebView()
        self.web_view.loadFinished.connect(self._load_finished)

        self._error = None

    def perform(self, url, timeout_value=30):
        request = QNetworkRequest()
        request.setUrl(QUrl(url))

        self.timeout_timer = QTimer()
        self.timeout_timer.timeout.connect(self._request_timed_out)

        self.timeout_timer.start(timeout_value * 1000)
        self.web_view.load(request)

    def _request_timed_out(self):
        self._error = 'Custom request timeout value exceeded.'
        self.timeout_timer.stop()
        self.web_view.stop()
        self.loadFinished.emit(False)

    def _load_finished(self, ok):
        pass
        # ok is now False, and self._error contains a custom error message
于 2012-10-07T19:57:54.033 に答える