Skip to main content

はじめに

  • この記事では、python-telegram-bot の HTTP バックエンドを httpx から aiohttp に変更する手順を解説します。httpx と aiohttp は、HTTP リクエストを行うために使用されるライブラリです。
  • 始める前に、環境に Python と python-telegram-bot ライブラリがインストールされていることを確認してください。python-telegram-bot のインストールコマンドは以下のとおりです。

ライブラリの変更

インストール

  • まず、Telegram へ送信するリクエストを処理するクラスを提供するライブラリが必要です。aiohttp_request エクストラ付きで ptbcontrib をインストールします。これにより aiohttp もインストールされます。
  • Square Cloud がデプロイ時にインストールできるように、同じ依存関係を requirements.txt にも追加します。
requirements.txt

httpx を aiohttp に変更する

  • 次に、ボットクライアントをインスタンス化するファイルで AiohttpRequest をインポートする必要があります。
  • このクラスは、デフォルトの httpx の代わりに Telegram へのすべてのリクエストを処理します。
  • AiohttpRequest は、以下の例のように PTB クライアントのインスタンスで使用されます。どちらの例もボットトークンを環境変数 TELEGRAM_BOT_TOKEN から読み込むため、トークンがコードに入ることはありません。

Square Cloud での実行

プロジェクトのルートに squarecloud.app ファイルを作成します。メインファイルが main.py のボットの場合:
squarecloud.app
次に、トークンを環境変数 TELEGRAM_BOT_TOKEN として設定します。アップロードフォームの Advanced configuration、アプリケーションの Environment Variables ページ (設定後にボットを再起動)、または CLI で設定できます。
詳細は環境変数を、デプロイの全手順は Telegram ボットのチュートリアルを参照してください。

なぜこの変更を行うのか?

  • デフォルトの httpx バックエンドでは、Telegram を長時間ポーリングするボットで ReadError などの NetworkError 例外が頻繁に発生することがあります。aiohttp への切り替えは、これを解消するための一般的な方法です。
  • ボットでこれらのエラーが発生していない場合は、この変更は不要です。

次のステップ

Telegram ボット

Telegram ボットを一から作成、デプロイ、テストします。

環境変数

ボットのトークンやその他のシークレットを管理します。

アプリが起動しない

ModuleNotFoundError などの起動エラーを修正します。

この記事は役に立ちましたか?

  • 私たちは可能な限り最良のサポートを提供するため、細心の注意を払ってこのコンテンツを作成しました。 この記事が少しでもお役に立ったなら、ぜひ私たちの活動を応援してください。すでに多くの開発者が Google と Trustpilot で Square Cloud に 402 件のレビューで 4.9/5 の評価をつけています。あなたのレビューもぜひ残してください。あなたにとって何が最も重要かを理解する助けになります。

Google レビュー

Google レビューにあなたのレビューを残してください。

Trustpilot

Trustpilot にあなたのレビューを残してください。