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.
Celery worker -l info -n apple --concurrency=100 --pool=eventlet
- person CENTURION   schedule 19.03.2019