Skip to content

Commit

Permalink
リトライ間隔を指定できるようにする
Browse files Browse the repository at this point in the history
  • Loading branch information
Hexa committed Mar 4, 2024
1 parent 1d23e3c commit 3e62eaf
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
11 changes: 10 additions & 1 deletion config.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ const (

// 100ms
DefaultTimeToWaitForOpusPacketMs = 100

// リトライ間隔 100ms
DefaultRetryIntervalMs = 100
)

type Config struct {
Expand All @@ -46,7 +49,8 @@ type Config struct {
HTTP2MaxReadFrameSize uint32 `ini:"http2_max_read_frame_size"`
HTTP2IdleTimeout uint32 `ini:"http2_idle_timeout"`

MaxRetry int `ini:"max_retry"`
MaxRetry int `ini:"max_retry"`
RetryIntervalMs int `ini:"retry_interval_ms"`

ExporterHTTPS bool `ini:"exporter_https"`
ExporterListenAddr string `ini:"exporter_listen_addr"`
Expand Down Expand Up @@ -159,6 +163,10 @@ func setDefaultsConfig(config *Config) {
if config.TimeToWaitForOpusPacketMs == 0 {
config.TimeToWaitForOpusPacketMs = DefaultTimeToWaitForOpusPacketMs
}

if config.RetryIntervalMs == 0 {
config.RetryIntervalMs = DefaultRetryIntervalMs
}
}

func validateConfig(config *Config) error {
Expand Down Expand Up @@ -209,4 +217,5 @@ func ShowConfig(config *Config) {
zlog.Info().Int("exporter_listen_port", config.ExporterListenPort).Msg("CONF")

zlog.Info().Int("max_retry", config.MaxRetry).Msg("CONF")
zlog.Info().Int("retry_interval_ms", config.RetryIntervalMs).Msg("CONF")
}
2 changes: 2 additions & 0 deletions config_example.ini
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ dump_file = ./dump.jsonl

# サーバからの切断時またはハンドラー個別で指定した条件でのリトライ回数を指定します
max_retry = 0
# リトライ間隔(ミリ秒)です
retry_interval_ms = 100

# aws の場合は IsPartial が false, gcp の場合は IsFinal が true の場合の最終的な結果のみを返す指定
final_result_only = true
Expand Down
6 changes: 6 additions & 0 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,9 @@ func (s *Server) createSpeechHandler(serviceType string, onResultFunc func(conte
Int("retry_count", retryCount).
Send()

// 連続のリトライを避けるために少し待つ
time.Sleep(time.Duration(s.config.RetryIntervalMs) * time.Millisecond)

// リトライ対象のエラーのため、クライアントとの接続は切らずにリトライする
continue
}
Expand Down Expand Up @@ -194,6 +197,9 @@ func (s *Server) createSpeechHandler(serviceType string, onResultFunc func(conte
Str("connection_id", h.SoraConnectionID).
Int("retry_count", retryCount).
Send()

// TODO: 必要な場合は連続のリトライを避けるために少し待つ処理を追加する

break
} else {
// サーバから切断されたが再接続させない設定の場合
Expand Down

0 comments on commit 3e62eaf

Please sign in to comment.