Python: pemrograman async dan pool_maxsize dengan HTTPAdapter

Apa cara yang benar untuk menggunakan HTTPAdapter dengan pemrograman Async dan memanggil suatu metode? Semua permintaan ini dibuat ke domain yang sama.

Saya melakukan beberapa pemrograman async di Celery menggunakan eventlet dan menguji beban di salah satu situs saya. Saya memiliki metode yang saya panggil untuk membuat permintaan ke url.

def get_session(url): # mendapatkan sesi mengembalikan header sumber, proksi = header_proxy() # atur semua variabel yang diperlukan ke Tidak Ada sehingga jika terjadi kesalahan # kita dapat memastikan bahwa kita tidak merusak respon = Tidak ada status_kode = Tidak ada data_keluar = Tidak ada isi = Tidak ada

try:
    # we are going to use request-html to be able to parse the
    # data upon the initial request

    with HTMLSession() as session:
        # you can swap out the original request session here
        # session = requests.session()
        # passing the parameters to the session
        session.mount('https://', HTTPAdapter(max_retries=0, pool_connections=250, pool_maxsize=500))
        response = session.get(url, headers=headers, proxies=proxies)
        status_code = response.status_code
        try:
            # we are checking to see if we are getting a 403 error on all requests. If so,
            # we update the status code
            code = response.html.xpath('''//*[@id="accessDenied"]/p[1]/b/text()''')
            if code:
                status_code = str(code[0][:-1])
            else:
                pass
        except Exception as error:
            pass
            # print(error)
        # assign the content to content
        content = response.content
except Exception as error:
    print(error)
    pass

Jika saya mengabaikan parameter pool_connections dan pool_maxsize, dan menjalankan kode, saya mendapatkan pesan kesalahan yang menunjukkan bahwa saya tidak memiliki cukup koneksi terbuka. Namun, saya tidak ingin membuka banyak koneksi secara tidak perlu jika tidak diperlukan.


person CENTURION    schedule 18.03.2019    source sumber
comment
Apa hubungannya dengan Seledri?   -  person Tomáลก Linhart    schedule 18.03.2019
comment
async dilakukan di seledri dengan eventlet. Celery worker -l info -n apple --concurrency=100 --pool=eventlet   -  person CENTURION    schedule 19.03.2019
comment
diperbarui untuk menyatakan bagaimana saya menggunakan seledri, terima kasih!   -  person CENTURION    schedule 19.03.2019


Jawaban (1)


berdasarkan ini... https://laike9m.com/blog/requests-secret-pool_connections-and-pool_maxsize,89/ Saya kira ini berlaku untuk host dan bukan tugas asinkron. Oleh karena itu, saya menetapkan jumlah maksimal ke jumlah maksimal koneksi yang dapat digunakan kembali per host. Jika saya menekan suatu domain beberapa kali, koneksi tersebut digunakan kembali.

person CENTURION    schedule 18.03.2019