前回、取引所間の差額を算出するプログラムを以下の記事で作成したのですが、これを実際に実行してみると、502・504エラーが発生し、プログラムの動作が止まってしまうということが数時間に1回程度の頻度で発生してしまうことが確認できました。
今回はこのトラブルを例外処理で対処していきたいと思います。
そもそも502・504エラーとは
502・504エラーのような5xxエラーはサーバーがリクエストの処理に失敗したときに発生するサーバーエラーです。そして、その中で今回多く発生していた502,504エラーはそれぞれ、以下のような内容のエラーであることが確認できました。
・502エラー:不正なゲートウェイ
・504エラー:ゲートウェイタイムアウト
そして、このエラーは前回作成したプログラムにおいては、zaifのサーバー側で発生しているもののようで 、このエラーそのものをどうこうすることはできません。そこで、今回はエラー発生時にプログラムの処理をとめないように例外処理をプログラムに書き加えていきたいと思います。
例外処理とは
例外処理とはプログラムが継続処理できなくなるような異常(エラー)が発生したときに、別の処理を行うことを意味しています。ここでは、プログラムが継続処理できなくなるような異常のことを「例外」と呼んでいるようですね。
今回、具体的には、zaifに価格の問い合わせを行った際に、サーバー側で502・504エラーが発生し、プログラムの継続処理ができなくなったとき(例外の発生)に一定時間待機し、その後、再度価格の問い合わせを行うように例外処理を書き加えていきたいと思います。
pythonではtry-except文を使うことで例外処理を行うことができます。
try-except文の使い方
【例文】
try: zaif = ZaifPublicApi() zaif_data_dict = zaif.ticker('btc_jpy') except: print('zaifからのデータ取得に失敗しました。')
【解説】
try-except文ではtryの後に処理したい内容を記述し、except後にエラー発生後に行いたい処理を記述します。例文の場合、tryの後に記述されたzaifからのデータ取得に失敗した場合、except後に記述されたprint文が実行されるようになっています。
次回は10月のアービトラージの成果を発表していきたいと思います。
今回のおすすめ
今回の記事に関連するおすすめの本が「みんなのPython 第4版」です。私もこの本でPythonを0から勉強しました。初心者向けのPython本をいくつか買い漁りましたが、この本が一番ではないでしょうか。とにかくおすすめです!
以上、higoxでした!
twitterもやっています!よかったらフォローお願いします!