はじめに
- この記事では、
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 で設定できます。
なぜこの変更を行うのか?
- デフォルトの
httpxバックエンドでは、Telegram を長時間ポーリングするボットでReadErrorなどのNetworkError例外が頻繁に発生することがあります。aiohttpへの切り替えは、これを解消するための一般的な方法です。 - ボットでこれらのエラーが発生していない場合は、この変更は不要です。
次のステップ
Telegram ボット
Telegram ボットを一から作成、デプロイ、テストします。
環境変数
ボットのトークンやその他のシークレットを管理します。
アプリが起動しない
ModuleNotFoundError などの起動エラーを修正します。
この記事は役に立ちましたか?
- 私たちは可能な限り最良のサポートを提供するため、細心の注意を払ってこのコンテンツを作成しました。 この記事が少しでもお役に立ったなら、ぜひ私たちの活動を応援してください。すでに多くの開発者が Google と Trustpilot で Square Cloud に 402 件のレビューで 4.9/5 の評価をつけています。あなたのレビューもぜひ残してください。あなたにとって何が最も重要かを理解する助けになります。
Google レビュー
Google レビューにあなたのレビューを残してください。
Trustpilot
Trustpilot にあなたのレビューを残してください。

