> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Como trocar o httpx para aiohttp no PTB

> Esse tutorial te guia em como trocar o httpx do python-telegram-bot para aiohttp.

## Introdução

* Este artigo te guiará em como trocar o `httpx` para `aiohttp` no `python-telegram-bot`. `httpx` e `aiohttp` são bibliotecas utilizadas para fazer requisições.
* Antes de iniciarmos, tenha certeza de ter Python e a biblioteca `python-telegram-bot` instalada no ambiente. Confira o comando de instalação do `python-telegram-bot`.

```bash theme={null}
pip install python-telegram-bot
```

## Trocando as bibliotecas

### Instalando

* Primeiro, você precisa instalar a biblioteca que oferece a classe para manipular os requests feitos para o Telegram. Vamos instalar a `ptbcontrib`, use o comando abaixo:

```bash theme={null}
pip install git+https://github.com/python-telegram-bot/ptbcontrib.git@main
```

### Trocando httpx para aiohttp

* Prosseguindo, precisamos importar o `AiohttpRequest` no arquivo que for instanciar o client do bot.

```python theme={null}
from ptbcontrib.aiohttp_request import AiohttpRequest
```

* Essa classe irá lidar com as requisições no lugar do `httpx`.
* `AiohttpRequest` será usado na instância do client do PTB como no exemplo abaixo:

<CodeGroup>
  ```python Bot theme={null}
  import asyncio
  import telegram
  from ptbcontrib.aiohttp_request import AiohttpRequest


  async def main():
      bot = telegram.Bot("TOKEN", request=AiohttpRequest(), get_updates_request=AiohttpRequest())
      async with bot:
          print(await bot.get_me())


  if __name__ == '__main__':
      asyncio.run(main())
  ```

  ```python ApplicationBuilder theme={null}
  import logging
  from telegram import Update
  from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler
  from ptbcontrib.aiohttp_request import AiohttpRequest

  logging.basicConfig(
      format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
      level=logging.INFO
  )

  async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
      await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")

  if __name__ == '__main__':
      application = ApplicationBuilder().request(AiohttpRequest(connection_pool_size=256)).get_updates_request(AiohttpRequest()).token('TOKEN').build()
      
      start_handler = CommandHandler('start', start)
      application.add_handler(start_handler)
      
      application.run_polling()
  ```
</CodeGroup>

## Por que fazer essa mudança?

* Mudar a biblioteca do `httpx` para o `aiohttp` trará alguns benefícios:

1. **Performance**: aiohttp é mais rápido que o httpx.
2. **Mitigar Erros**: o httpx lança muitos erros como `ReadError` e outros NetworkErrors devido a suas configurações e velocidade.

## Gostou desse artigo?

* Criamos este conteúdo com o máximo de cuidado para oferecer a melhor ajuda possível.
  Se o artigo contribuiu de alguma forma, valorize nosso trabalho! Deixe sua avaliação e ajude-nos a entender o que é mais importante para você.

<CardGroup cols={2}>
  <Card title="Google Reviews" icon="google" href="https://g.page/r/CYZenpQcDgTzEAI/review">
    Deixe sua avaliação no Google Reviews.
  </Card>

  <Card title="Trustpilot" icon="star" href="https://www.trustpilot.com/review/squarecloud.app">
    Deixe sua avaliação no Trustpilot.
  </Card>
</CardGroup>
