HTTPクライアントはPython リクエストライブラリを使用して、CloudFlareによってプロキシされたAPIにアクセスします。クライアントは数値応答ステータスコードをHTTPStatus
enumインスタンスに変換します。 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#CloudFlare:簡体字...Python 3.5でHTTPStatusにカスタムコードを追加するには?
import requests
from http import HTTPStatus
url = ...
response = requests.get(url)
status = HTTPStatus(response.status_code)
CloudFlareのプロキシサービスは、いくつかの非公式5xxのHTTPステータスコードを返すことができます。これらは、0122(接続のタイムアウト)などのコードがPythonのlib/http/__init__.py
で定義されているHTTPStatus
列挙型のメンバーではないため、HTTPStatus
はValueError
になります。
HTTPStatus
列挙型のCloudFlareステータスコードを追加するにはどうすればよいですか?または、HTTPStatus
列挙型メンバをUnoffical CloudFlareステータスコードとともに他の列挙型にロードするにはどうすればよいですか?
Python 3.5 Enum
のドキュメントhttps://docs.python.org/3/library/enum.htmlには、これまで私が挫折した制限が記載されています。
セクション8.13.9:列挙型のサブクラス化は、 列挙型でメンバーが定義されていない場合にのみ許可されます。
セクション8.13.14.2:
Enum
メンバーの中で最も興味深いものは、それらがシングルトンであることです。 です。EnumMeta
は、それがEnum
クラス自体の作成 ありながら、それらすべてを作成し、新しいものを今まで のみ既存のメンバーのインスタンスを返すことによってインスタンス化されていないことを確実にするための場所でカスタム__new__()
を置きます。
'HTTPStatus'を使う必要がありますか?それが変更可能でないという事実は、変更することをほとんど不可能にします。代わりにstatiiに辞書のステータスコードをマッピングするだけでよいでしょう。 –