Permintaan Bagaimana untuk mengganggu permintaan?
PHPz
PHPz 2017-05-18 10:53:01
0
1
1317

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?

PHPz
PHPz

学习是最好的投资!

membalas semua(1)
Peter_Zhu

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()
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan