tamaq2048 / slack-summarizer

OpenAI's ChatGPT API to create and post a summary of a Slack public channel.
1 stars 0 forks source link

OpenaiのServiceUnavailableErrorへの対応 #2

Open tamaq2048 opened 12 months ago

tamaq2048 commented 12 months ago

openai.error.ServiceUnavailableError: The server is overloaded or not ready yet.

Traceback (most recent call last): File "/home/runner/work/slack-summarizer/slack-summarizer/summarizer.py", line 207, in runner() File "/home/runner/work/slack-summarizer/slack-summarizer/summarizer.py", line 194, in runner text = summarize("\n".join(spilitted_messages), LANGUAGE) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/slack-summarizer/slack-summarizer/summarizer.py", line 33, in summarize response = openai.ChatCompletion.create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/openai/api_resources/chat_completion.py", line 25, in create return super().create(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/openai/api_resources/abstract/engine_apiresource.py", line 153, in create response, , api_key = requestor.request( ^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/openai/api_requestor.py", line 226, in request resp, got_stream = self._interpret_response(result, stream) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/openai/api_requestor.py", line 619, in _interpret_response self._interpret_response_line( File "/opt/hostedtoolcache/Python/3.11.4/x64/lib/python3.11/site-packages/openai/api_requestor.py", line 662, in _interpret_response_line raise error.ServiceUnavailableError( openai.error.ServiceUnavailableError: The server is overloaded or not ready yet. Error: Process completed with exit code 1.

tamaq2048 commented 11 months ago

ServiceUnavailableErrorは、通常、サービスが一時的に利用できないことを示すエラーです。これは、サーバーの過負荷、メンテナンス、あるいはその他の一時的な問題によるものである可能性があります。このようなエラーに対処するための一般的な戦略は以下の通りです:

リトライロジックの実装:エラーが一時的なものである場合、リクエストを再試行することで問題を解決できることがあります。ただし、無制限にリトライを行うと、サーバーに追加の負荷をかける可能性があるため、リトライの回数は制限するべきです。また、リトライ間の適切な待機時間(バックオフ)を設けることも重要です。

エラーハンドリングとユーザーへのフィードバック:エラーが発生した場合、それを適切にハンドリングし、ユーザーに明確なフィードバックを提供することが重要です。ユーザーには、何が起こったのか、何が期待されるのか(例えば、後で再試行する、サポートに連絡するなど)を伝えるべきです。

冗長性の確保:可能であれば、同じサービスを提供する別のサーバーやプロバイダーに切り替えることで、サービスの可用性を高めることができます。

モニタリングとアラート:サービスの可用性を監視し、問題が発生した場合にアラートを送るシステムを設置することで、問題に迅速に対応することができます。

tamaq2048 commented 11 months ago

リトライロジックを実装、mainへデプロイ

tamaq2048 commented 11 months ago

エラーハンドリングし、messageへエラー通知を出力