QNetworkReply doesn't abort/close



  • My Code: (relevent parts)
    @

    def update(self):
        request = QNetworkRequest()
        request.setUrl(QUrl("someurl"))
        self.network_manager.finished.connect(self._update)
        self.network_manager.get(request)
    
    def _update(self, reply): # update stage 2    
        if not reply.error() == QNetworkReply.NoError:
            # request probably failed
            print(reply.error())
            print(reply.errorString())
            print("retrying")
            self.update()
        else:
            reply.abort()
            #print(str(reply.readAll().data()))
            data = json.loads(str(reply.readAll().data())) # get data
            #work with the data (irrelevant)
    
    def sendBearer_req(self):
    
        request = QNetworkRequest()
        request.setUrl(QUrl("someotherurl"))
    
        self.network_manager = QNetworkAccessManager()
        self.network_manager.finished.connect(self._request_finished)        
    
        self.network_manager.post(request, self.urlencode_post({'some' : 'thing'}))
    
    def sendBearer(self, reply):
        reply.abort()
        ans = reply.readAll()        
        print(ans)
        time.sleep(5)
        print(ans)
    
        try:
            self.bearer = json.loads(str(ans))                
            self.update()            
        except:
            raise #for debugging
            self.sendBearer_req() #retry        
    
    def _request_finished(self, reply):
        if not reply.error() == QNetworkReply.NoError:
            # request probably failed
            print(reply.error())
            print(reply.errorString())
            print("retrying")
            self.sendBearer_req()
        else:
            self.sendBearer(reply)@
    

    Problem:

    it's in this part:
    @
    reply.abort()
    ans = reply.readAll()
    print(ans)
    time.sleep(5)
    print(ans)@
    I'm pretty sure the abort isn't working because on the first print it prints just what i want but then, while it waits, apparently it continues with the code and enters the update function where it sends another request. Therefor in the second print the two replies mix together and it prints the both.

    (btw I tried close as well - same result)

    What am I doing wrong?



  • what about sleep do you process when you sleep ?
    try :
    @while reply.isReadable () :

    ans = ans + reply.read()

    print (ans)@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.