Requêtes Comment interrompre une requête ?
PHPz
PHPz 2017-05-18 10:53:01
0
1
1345

Comment interrompre les requêtes dans les requêtes en python ? J'ai utilisé plusieurs threads pour obtenir simultanément, mais je n'ai pas pu trouver l'opération de demande d'arrêt. Je ne pouvais qu'attendre la fin du thread. J'ai déjà utilisé des sockets et j'y ai simplement écrit un statut pour arrêter la lecture. les demandes n’ont pas trouvé de méthode similaire.

import requests
from threading import Thread
from contextlib import closing

import json
import time


class TestT(Thread):

    def __init__(self):
        super(TestT, self).__init__()

        self.s = requests.session()

    def stop(self):
        self.p.connection.close()
        self.s.close()

    def run(self):
        t = time.time()

        self.p = self.s.get('http://api2.qingmo.com/api/column/tree/one?Pid=8&Child=1', stream=True, timeout=10)

        # 消耗了很多时间
        print time.time()-t

        with closing(self.p) as r:
            print time.time()-t

            data = ''

            for chunk in r.iter_content(4096):
                data += chunk

            print json.loads(data)

        print time.time()-t


t = TestT()
t.start()
t.join(30)
t.stop()
t.join()

Je l'ai changé et utilisé la lecture en streaming, mais lors de la réception, cela prenait encore plus de 3 secondes. Comment interrompre ces 3 secondes ?

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
Peter_Zhu

Ajoutez une variable IsStop puis revenez pour arrêter le fil

import requests
from threading import Thread
from contextlib import closing

import json
import time


class TestT(Thread):

    def __init__(self):
        super(TestT, self).__init__()

        self.s = requests.session()
        self.IsStop = False

    def stop(self):
        self.p.connection.close()
        self.s.close()
        self.IsStop = True

    def run(self):
        t = time.time()

        self.p = self.s.get('http://api2.qingmo.com/api/column/tree/one?Pid=8&Child=1', stream=True, timeout=10)

        # 消耗了很多时间
        print time.time()-t

        with closing(self.p) as r:
            print time.time()-t

            data = ''

            for chunk in r.iter_content(4096):
                if self.IsStop : return None
                data += chunk

            print json.loads(data)

        print time.time()-t


t = TestT()
t.start()
t.join(30)
t.stop()
t.join()
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal