bylge-logo

    Bylge

    Python ile verimli ve normalinden kat ve kat hızlı istek gönderin

    Giriş: Bazı işlemlerimiz için requests modülü yeterli olmayabilir. Tabii yeterli olup olmadığını anlamanız için işlemleriniz için thread kullanmayı deneyin. Fak

    Picture of the XIORXA

    XIORXA

    @xiorxa

    Giriş:

    Bazı işlemlerimiz için requests modülü yeterli olmayabilir. Tabii yeterli olup olmadığını anlamanız için işlemleriniz için thread kullanmayı deneyin. Fakat bugünkü konumuz aiohttp ve httpx bu modüller gayet hızlıdırlar. Requests gibi modüllerin yetmediği zamanlarda sizler için güzel alternatifler olabilirler. Fakat kullanmadan önce dikkatli olun çünkü gönderilen çok fazla HTTP isteği "saldırıyor" gibi davranacaktır. Çok fazla istek tespit edilirse bazı web siteleri IP adresinizi yasaklayabilir... Vereceğim kodlar bu modüller için giriş kodları olacak ve aiohttp için bağlantıları sınırlamak için kod da vereceğim.

    Aiohttp

    Modülü indirin:

    "pip install aiohttp"

    "pip install asyncio"


    import asyncio #modülleri dahil edin

    import aiohttp

    from aiohttp.client import ClientSession



    async def main():

    limit= aiohttp.TCPConnector(limit=10)

    """(sınır) aslında bu kod için gerek yok. Fakat bazen işlemleriniz için gerekli olabiliyor. Buradaki "limit=" kısmını istediğiniz gibi değiştirebilir ya da hiç kullanmazsınız size kalmış. Ancak bu kodu değişik şekillerde kullandığınız vakit mesela bu kodu kullanmadan(limit= aiohttp.TCPConnector(limit=10)) bir döngüye alırsanız saldırıyor gibi davranacak. Bu kötü bir durum."""


    async with aiohttp.ClientSession(connector=limit) as session: #Yeni

    async with session.get(' http://python.org ') as response: #url ve get isteği yapmak istiyoruz

    print(response.status) #yanıtı alalım


    loop = asyncio.get_event_loop()

    loop.run_until_complete(main())


    Httpx

    Modülü indirin:

    "pip install httpx"

    "pip install asyncio"

    Kullanımı basit olabilir bir taraftan requests modülüne benziyor:

    import httpx

    r = httpx.get(' https://bylge.com/ ')

    print(r.status_code)


    Diğer bir taraftan async desteği de bulunuyor.HTTPX, varsayılan olarak standart bir senkronize API sunar, ancak ihtiyacınız olursa size zaman uyumsuz bir istemci seçeneği de sunar. Bunu kullanmanızı öneriyorum.


    import httpx

    import asyncio


    async def main():

    async with httpx.AsyncClient() as client:

    response = await client.get('https://www.python.org')

    print(response)


    asyncio.run(main())


    İstekte bulunma - Httpx

    response = await client.get(...) İstek yöntemlerinin tümü zaman uyumsuzdur, bu nedenle aşağıdakilerin tümü için stil kullanmalısınız :


    AsyncClient.get(url, ...)

    AsyncClient.options(url, ...)

    AsyncClient.head(url, ...)

    AsyncClient.post(url, ...)

    AsyncClient.put(url, ...)

    AsyncClient.patch(url, ...)

    AsyncClient.delete(url, ...)

    AsyncClient.request(method, url, ...)

    AsyncClient.send(request, ...)



    Published Date:

    May 20, 2023

    Updated Date:

    December 02, 2023