cari

Rumah  >  Soal Jawab  >  teks badan

Permintaan Bagaimana untuk mengganggu permintaan?

Bagaimana untuk mengganggu permintaan dalam permintaan dalam python? Saya menggunakan berbilang benang untuk mendapatkan secara serentak, tetapi saya tidak dapat mencari operasi permintaan berhenti. Saya hanya boleh menunggu sehingga benang itu tamat sebelum ini, dan hanya menulis status di dalamnya untuk berhenti membaca. permintaan tidak menemui kaedah yang serupa.

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()

Saya menukarnya dan menggunakan bacaan penstriman, tetapi apabila mendapat, ia masih mengambil masa lebih daripada 3 saat. Bagaimana untuk mengganggu 3 saat ini?

PHPzPHPz2748 hari yang lalu1318

membalas semua(1)saya akan balas

  • 天蓬老师

    天蓬老师2017-05-18 10:55:01

    Tambah pembolehubah IsStop dan kemudian kembali untuk menghentikan benang

    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()

    balas
    0
  • Batalbalas