3 Hal Ini Mempengaruhi Performa Python Requests

Subscribe Dengan Account Google Untuk Membaca Semua Artikel Ini!
3 Hal Ini Mempengaruhi Performa Python Requests

Requests merupakan librari standar yang digunakan untuk membuat request HTTP dengan python. Python Requests mengabstraksi kerumitan berbagai macam method request HTTP menjadi lebih sederhana dan mudah dimengerti.

Dalam tutorial ini Anda akan mempelajari apa saja hal-hal yang mempengaruhi performa librari Python Requests saat berada pada environment production, berikut ini 3 hal yang akan kita pelajari:


  1. Timeout

  2. Session Object

  3. Max Retries


Mengetahui tentang 3 hal diatas menjadi penting agar kita bisa mengetahui lebih jauh bagaimana performa librari tersebut saat menghadapi situasi yang crowded.


1) Requests Timeout


Saat Anda membuat request HTTP ke layanan eksternal, sistem Anda perlu menunggu respons sebelum melanjutkan ke proses berikutnya. Jika aplikasi Anda menunggu terlalu lama untuk respons tersebut, request ke service Anda dapat terganggu, atau bahkan terhenti.

Secara default, requests akan menunggu respons tanpa batas waktu, jadi Anda harus menentukan durasi waktu tunggu untuk mencegah hal ini terjadi. Untuk mengatur batas waktu request, gunakan timeout parameter. timeout dapat berupa bilangan bulat atau float yang mewakili jumlah detik untuk menunggu respons sebelum waktu habis:

>>> requests.get('https://api.github.com/', timeout=1).status_code
200
>>> requests.get('https://api.github.com/', timeout=3.05).status_code
200

Anda juga dapat menambahkan Tuple ke timeout dengan elemen pertama sebagai batas waktu koneksi (waktu yang memungkinkan klien untuk membuat koneksi ke server), dan yang kedua adalah batas waktu baca (waktu yang akan menunggu tanggapan setelah klien telah membuat koneksi ke server):

>>> print(requests.get('https://api.github.com/', timeout=(2,5)).status_code)
200

Jika request HTTP terhubung dalam waktu 2 detik dan menerima data dalam waktu 5 detik sejak koneksi dibuat, maka respons akan dikembalikan seperti sebelumnya. Jika waktu request HTTP habis, maka fungsi akan memunculkan Timeout pengecualian

import requests
from requests.exceptions import Timeout

try:
response = requests.get('https://api.github.com', timeout=1)
print(response.status_code)
except Timeout:
print('The request timed out')


2) Requests Session Object


Ketika anda melakukan request HTTP dengan method get()dan post(). Fungsi-fungsi ini adalah abstraksi dari apa yang terjadi saat Anda membuat request HTTP. Mereka menyembunyikan detail implementasi seperti bagaimana koneksi dikelola, sehingga Anda tidak perlu memikirkan bagaimana proses itu terjadi.

Di bawah abstraksi itu ada kelas yang disebut Session. Jika Anda perlu menyempurnakan kontrol Anda atas request HTTP yang dibuat atau meningkatkan kinerja request HTTP, Anda mungkin perlu menggunakan Session instance secara langsung.

Sesi digunakan untuk mempertahankan parameter di seluruh request HTTP. Misalnya, jika Anda ingin menggunakan autentikasi yang sama di beberapa request HTTP, Anda dapat menggunakan sesi:

import requests
from getpass import getpass

with requests.Session() as session:
session.auth = ('username', getpass())
response = session.get('https://api.github.com/user')

print(response.headers)
print(response.json())

 

Setiap kali Anda membuat request HTTP dengan session, setelah diinisialisasi dengan kredensial autentikasi, kredensial akan dipertahankan.