2015-10-13 5 views
6

私は、(Dockerリンク経由で)/ etc/hostsのアップデートに依存するBeegoアプリケーションを実行して、他のサーバーを探しています。/etc/hostsはうまく更新されますが、アプリケーションが再起動されたり、あまりにも長く待たされたりしない限り、新しいホストは使用されません。 src/net/hostsのドキュメントを確認したところ、5分のリフレッシュ時間にロックされているようです。ホストを強制的にリフレッシュする方法はありますか?

このキャッシュを強制的に更新する方法はありますか、この問題を間違った方法で見ていますか?

+0

私はアセンブリなしでそれを行う方法はありません。 – thwd

+0

私はsrc/net/hosts.goのタイムアウト定数を変更して自分のカスタムビルドをロールバックできますが、別の方法が必要です。私は唯一の人ではなく、この人に執着していることを嬉しく思う。 – Diablojoe

+3

通常、動的な変更は、dnsや別のconfig dbのような別のメカニズムを使用して行う必要があります。 cgoを有効にしてバイナリをビルドすると、システムリゾルバを使用してホストをルックアップします(システムによって短期間キャッシュされないことも保証されませんが、通常はほとんどの場合5分未満です) – JimB

答えて

0

The hosts file cache time in Go was shortened to 5 seconds. Goの動作は、純粋なGo(デフォルト、例外あり)またはCgoリゾルバを使用するかどうかによって異なります。純GoリゾルバのGo内部キャッシュを回避するには、現在、Cgoリゾルバを強制する以外の方法はありません。

There are various ways to force Go to use the Cgo resolver.way to force Go to use the Cgo resolver suggested by the documentationは、環境変数GODEBUGnetdns=cgoに設定します。

関連する問題