Closed tenax66 closed 1 year ago
了解です。
時刻情報は証拠のキモなので、方針としてはNTPサーバーAから取得できなかった場合 →別のNTPサーバーBからも取得してみる →ダメだったらNTPサーバーCから取得してみる →それもダメだったらローカルマシンの時刻を返す といった実装にしたいところです。
utils.time で、5種類のサーバーを順番に試す形にして実装しました。 一応、全部からエラーが返ってきたときの処理も実装する必要があると思いますが未着手です。datetimeオブジェクトを返さないと後の処理が面倒になるので、1970年1月1日午前0時0分0秒を返すようにしておくのがいいかもしれません。
ありがとうございます! すべてから例外が返ってきた場合の処理は、わたしの方でも考えておきます。
こちらは #35 で解決したので、closeします。
NTPサーバから時刻を取得する際、たまにレスポンスが帰ってこないことがあります。 たとえば
のようなコードで、
ntplib.NTPException: No response received from ntp.nict.jp.
というエラーになります。
NTPサーバは外部の機関が立てているものなので、レスポンスが帰ってこないことはプログラム側で考慮すべきで、適切なエラーハンドリングをする必要があります。 (時刻がNTPサーバから取得できなかった場合は、但し書きをつけてローカルマシンの時刻を返すなど。)
追伸: 今回のように機能の修正が必要になったとき、対象の処理がコピーされてあちこちにあるとそれらすべてを修正する必要が出てきて、手間だったり漏れが発生したりします。そのため、コードはなるべくDRYに書くように心がけたいです。