Panduan Pemula untuk aiohttp di Python

Saat bekerja dengan API web Python, seringkali ada penundaan. Pemrograman asinkron membantu, dan aiohttp adalah alat terbaik. Jangan khawatir jika Anda belum familiar!

Ardianto Nugroho

Ardianto Nugroho

14 February 2026

Panduan Pemula untuk aiohttp di Python

Saat bekerja dengan Python untuk berinteraksi dengan API web, terutama saat menangani banyak permintaan, Anda mungkin pernah mengalami beberapa penundaan. Baik itu mengunduh file, mengikis data, atau membuat permintaan ke API, menunggu setiap tugas selesai dapat memperlambat segalanya secara signifikan. Di sinilah pemrograman asinkron berperan untuk menyelamatkan hari, dan salah satu alat terbaik dalam ekosistem Python untuk ini adalah pustaka aiohttp.

Jika Anda tidak terbiasa dengan pemrograman asinkron, jangan khawatir! Saya akan menjelaskannya dengan istilah sederhana dan menjelaskan bagaimana aiohttp dapat membantu menyederhanakan permintaan web Anda, membuatnya lebih cepat dan lebih efisien.

Sebelum kita membahas lebih dalam, mari kita bahas sesuatu yang dihadapi setiap pengembang: pengujian API. Dan jika Anda seperti kebanyakan tim, Anda mungkin menggunakan Postman untuk itu.

Saya mengerti—Postman adalah alat yang familiar. Tapi jujur saja, bukankah kita semua memperhatikan bagaimana alat ini semakin kurang menarik dari tahun ke tahun? Namun, di sinilah Anda, bekerja sebagai tim, dan Anda membutuhkan alat kolaborasi untuk menjaga kelancaran proses pengembangan. Jadi, apa yang Anda lakukan? Anda berinvestasi di Postman Enterprise dengan harga $49 per bulan.

Tapi inilah masalahnya: Anda tidak harus melakukannya.

Ya, Anda tidak salah baca. Ada cara yang lebih baik dan lebih efisien untuk mengelola pengujian API dan kolaborasi tim tanpa harus mengeluarkan begitu banyak uang untuk alat yang, terus terang, tidak menawarkan apa yang pernah ditawarkannya. Mari kita jelajahi beberapa alternatif yang lebih baik!

Gambar 1

APIDog: Anda Mendapatkan Semua yang Ada di Postman Versi Berbayar, Tetapi LEBIH MURAH
Benar sekali, APIDog memberi Anda semua fitur yang ada di Postman versi berbayar, dengan sebagian kecil dari biaya tersebut. Migrasi telah dilakukan dengan sangat mudah sehingga Anda hanya perlu mengklik beberapa tombol, dan APIDog akan melakukan semuanya untuk Anda.

APIDog pasti layak dicoba. Tetapi jika Anda adalah Pemimpin Teknis dari Tim Pengembang yang benar-benar ingin membuang Postman untuk sesuatu yang Lebih Baik, dan Lebih Murah, Lihat APIDog!

button

Apa itu aiohttp?

aiohttp adalah pustaka Python populer yang memungkinkan Anda menulis klien dan server HTTP asinkron. Anggap saja seperti pustaka requests Python tetapi ditingkatkan dengan kekuatan pemrograman asinkron.

Pustaka ini dibangun di atas kerangka kerja asyncio Python, yang berarti dapat menangani sejumlah besar permintaan secara bersamaan tanpa menunggu setiap permintaan selesai sebelum beralih ke permintaan berikutnya.

Bayangkan Anda berada di kedai kopi, dan alih-alih mengantre untuk setiap pesanan diselesaikan satu per satu, beberapa barista mulai mengerjakan pesanan Anda secara bersamaan.

Dengan aiohttp, seolah-olah Anda bekerja dengan tim barista, semuanya menyeduh kopi (atau, dalam hal ini, mengambil data) pada saat yang sama. Hasilnya? Hasil lebih cepat dengan lebih sedikit menunggu.

Mengapa Anda Harus Peduli dengan aiohttp?

Mari kita bicara tentang mengapa aiohttp penting bagi Anda, apakah Anda seorang pemula Python, ilmuwan data, pengikis web, atau bahkan pengembang berpengalaman.

Bagaimana Cara Kerja aiohttp?

Mari kita selami bagaimana aiohttp bekerja dalam praktiknya.
Pertama, mari kita perjelas apa sebenarnya arti pemrograman asinkron. Dalam program sinkron, setiap tugas harus selesai sebelum tugas berikutnya dimulai.

Jika Anda menunggu server web merespons permintaan Anda, seluruh program berhenti sampai respons itu tiba. Pemrograman asinkron memungkinkan program untuk terus mengeksekusi tugas lain sambil menunggu respons.

aiohttp memanfaatkan model asinkron ini untuk memungkinkan Anda mengirimkan beberapa permintaan HTTP sekaligus, dan kemudian menangani respons saat masuk. Berikut adalah contoh yang mendemonstrasikan ini dengan cara yang sederhana:

Cara Membuat Permintaan Web dengan aiohttp: Dasar-dasarnya

Gambar 2. Cara Kerja Alur Sinkron Python

Diagram ini (gambar 2) membandingkan alur sinkron (satu tugas selesai sebelum tugas berikutnya) dan alur asinkron (beberapa tugas berjalan secara bersamaan).
Kotak biru mewakili tugas sinkron, sedangkan kotak hijau mewakili tugas asinkron.
Panah menunjukkan alur eksekusi untuk proses sinkron dan asinkron.

Visualisasi Event Loop (Mekanisme Loop dalam Model Asinkron Python)

Gambar 3. Cara Kerja Model Asinkron Python

Diagram ini (gambar 3) mengilustrasikan mekanisme event loop dalam model pemrograman asinkron Python.
Node mewakili langkah-langkah yang berbeda, seperti memulai tugas, menunggu operasi I/O, dan mengeksekusi callback.
Panah terarah menunjukkan bagaimana tugas dimulai, bagaimana mereka menunggu operasi I/O, dan bagaimana event loop menangani callback dan memulai ulang tugas.

Pengambilan URL Bersamaan di aiohttp

Gambar 4. Pengambilan URL Bersamaan di aiohttp

Diagram kasus penggunaan (gambar 4) memvisualisasikan bagaimana aiohttp dapat menangani beberapa permintaan URL secara bersamaan. Setiap proses "Ambil URL" ditangani secara bersamaan dan diteruskan ke node pemrosesan pusat.

Diagram ini menunjukkan bagaimana aiohttp dapat mengambil beberapa URL secara bersamaan dalam skenario pengikisan web atau permintaan API.

Diagram Alur Kerja

Gambar 5. Alur kerja aiohttp

Diagram alur kerja memvisualisasikan pipeline data dasar, menunjukkan langkah-langkah pengambilan, pemrosesan, pembersihan, dan penyimpanan data.

Contoh: Membuat Permintaan Asinkron dengan aiohttp

import aiohttp
import asyncio

async def fetch_url(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    urls = [
        "https://jsonplaceholder.typicode.com/posts/1",
        "https://jsonplaceholder.typicode.com/posts/2",
        "https://jsonplaceholder.typicode.com/posts/3",
    ]
    
    async with aiohttp.ClientSession() as session:
        tasks = [fetch_url(session, url) for url in urls]
        responses = await asyncio.gather(*tasks)
        
        for i, response in enumerate(responses):
            print(f"Response {i+1}: {response[:60]}...")  # Print first 60 characters of each response

Run the event loop
asyncio.run(main())

Mengunduh konten secara sinkron
Pertama, mari kita coba melakukan ini secara sinkron menggunakan pustaka requests. Ini dapat diinstal menggunakan:

pip.python3.7 -m pip install requests


Mengunduh sumber daya online menggunakan requests sangat mudah.

import requestsresponse = requests.get("https://www.python.org/dev/peps/pep-8010/")print(response.content)


Ini akan mencetak konten HTML dari PEP 8010. Untuk menyimpannya secara lokal ke file:

filename = "sync_pep_8010.html"with open(filename, "wb") as pep_file:pep_file.write(content.encode('utf-8'))

File sync_pep_8010.html akan dibuat.

Kasus Penggunaan Dunia Nyata untuk aiohttp

1. Pengikisan Web
Jika Anda mengikis beberapa halaman dari situs web, menunggu setiap halaman dimuat bisa menjadi proses yang sangat lambat. Dengan aiohttp, Anda dapat mengikis beberapa halaman secara bersamaan, mempercepat proses secara dramatis. Bayangkan saja mengambil ratusan halaman sekaligus alih-alih menunggu setiap halaman dimuat secara berurutan.
2. Permintaan API
Saat bekerja dengan API, terutama yang memiliki batasan laju atau merespons dengan lambat, Anda dapat mengirim beberapa permintaan sekaligus menggunakan aiohttp. Misalnya, jika Anda membuat kueri API cuaca untuk mendapatkan data untuk beberapa kota, aiohttp dapat membantu Anda mengumpulkan hasilnya lebih cepat.
3. Pengumpulan Data
Baik Anda bekerja dengan data pasar saham, umpan media sosial, atau situs web berita, aiohttp dapat menjadi pengubah permainan untuk menangani sejumlah besar permintaan HTTP secara bersamaan, memungkinkan Anda mengumpulkan data lebih cepat dan lebih efisien.

Berikut adalah tiga contoh praktis penggunaan pustaka aiohttp Python, lengkap dengan langkah-langkah dan contoh kode:

1. Membuat Permintaan HTTP Asinkron

Contoh ini menunjukkan cara membuat beberapa permintaan HTTP asinkron menggunakan aiohttp.

Langkah-langkah:

  1. Impor modul yang diperlukan
  2. Tentukan fungsi asinkron untuk mengambil URL
  3. Buat daftar URL untuk diambil
  4. Siapkan event loop asinkron
  5. Jalankan fungsi asinkron untuk setiap URL secara bersamaan
import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    urls = [
        'https://api.github.com',
        'https://api.github.com/events',
        'https://api.github.com/repos/python/cpython'
    ]
    
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        responses = await asyncio.gather(*tasks)
        
        for url, response in zip(urls, responses):
            print(f"URL: {url}\nResponse length: {len(response)}\n")

asyncio.run(main())

2. Membuat Server API Sederhana

Contoh ini menunjukkan cara membuat server API dasar menggunakan aiohttp.

Langkah-langkah:

  1. Impor modul yang diperlukan
  2. Tentukan penangan rute
  3. Buat aplikasi dan tambahkan rute
  4. Jalankan aplikasi
from aiohttp import web

async def handle_root(request):
    return web.json_response({"message": "Selamat datang di API"})

async def handle_users(request):
    users = [
        {"id": 1, "name": "Alice"},
        {"id": 2, "name": "Bob"},
        {"id": 3, "name": "Charlie"}
    ]
    return web.json_response(users)

app = web.Application()
app.add_routes([
    web.get('/', handle_root),
    web.get('/users', handle_users)
])

if __name__ == '__main__':
    web.run_app(app)

3. Server Obrolan Websocket

Contoh ini menunjukkan cara membuat server obrolan berbasis websocket sederhana menggunakan aiohttp.

Langkah-langkah:

  1. Impor modul yang diperlukan
  2. Buat set untuk menyimpan websocket aktif
  3. Tentukan penangan websocket
  4. Buat aplikasi dan tambahkan rute
  5. Jalankan aplikasi
import aiohttp
from aiohttp import web
import asyncio

active_websockets = set()

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)
    
    active_websockets.add(ws)
    
    try:
        async for msg in ws:
            if msg.type == aiohttp.WSMsgType.TEXT:
                for client in active_websockets:
                    if client != ws:
                        await client.send_str(f"User{id(ws)}: {msg.data}")
            elif msg.type == aiohttp.WSMsgType.ERROR:
                print(f"WebSocket connection closed with exception {ws.exception()}")
    finally:
        active_websockets.remove(ws)
    
    return ws

app = web.Application()
app.add_routes([web.get('/ws', websocket_handler)])

if __name__ == '__main__':
    web.run_app(app)

Untuk menguji server websocket ini, Anda dapat menggunakan klien websocket atau membuat halaman HTML sederhana dengan JavaScript untuk terhubung ke server.

Contoh-contoh ini menunjukkan berbagai aspek aiohttp, mulai dari membuat permintaan asinkron hingga membuat server web dan menangani websocket. Mereka memberikan fondasi yang kuat untuk membangun aplikasi yang lebih kompleks menggunakan pustaka yang kuat ini.

Kesimpulan


Di dunia yang didorong oleh data saat ini, kecepatan penting, dan kemampuan untuk menangani banyak tugas sekaligus dapat memberi Anda keunggulan. aiohttp adalah alat yang harus dimiliki dalam toolkit Python Anda jika Anda berurusan dengan pengikisan web, permintaan API, atau tugas lain yang mengharuskan pembuatan banyak permintaan HTTP.

Dengan menjadi asinkron, Anda tidak hanya menghemat waktu tetapi juga membuat kode Anda lebih efisien dan terukur.
Jadi, jika Anda ingin membawa permintaan web Python Anda ke tingkat berikutnya, cobalah aiohttp.

Anda akan segera melihat mengapa ini menjadi pilihan populer di kalangan pengembang yang berurusan dengan aplikasi yang banyak menggunakan I/O.

Apakah Anda merasa halaman ini bermanfaat? Saya harap ini adalah materi yang sangat kaya untuk Anda!
Semoga yang terbaik untuk Anda!

button

Explore more

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Pelajari cara buat web apa pun dgn Lovable. Panduan lengkap, fitur inovatif, & integrasi Apidog (API gratis).

15 April 2025

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Tutorial ini memandu Anda menyiapkan & mengelola API key khusus di Cursor: OpenAI, Anthropic, Google, & Azure.

11 April 2025

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Pelajari API NVIDIA Llama Nemotron utk buat agen AI canggih.

11 April 2025

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.