Perform proxy updates in goroutines

This commit is contained in:
Ryan McGuire 2025-01-12 19:10:30 -05:00
parent eaf2cf211d
commit f87b35b306

View File

@ -7,6 +7,7 @@ import (
"context" "context"
"fmt" "fmt"
"net/http" "net/http"
"sync"
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel" "gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
"github.com/rs/zerolog" "github.com/rs/zerolog"
@ -120,26 +121,40 @@ func (aw *AmbientWeather) handleProviderRequest(
// Uses a weather update to allow awn to publish to wunderground and // Uses a weather update to allow awn to publish to wunderground and
// visa versa. // visa versa.
if station := update.StationConfig; station != nil { if station := update.StationConfig; station != nil {
// Perform proxy updates in parallel if enabled
var proxyWg sync.WaitGroup
if station.ProxyToAWN { if station.ProxyToAWN {
err := aw.awnProvider.ProxyReq(ctx, update) proxyWg.Add(1)
if err != nil { go func() {
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather") defer proxyWg.Done()
return err := aw.awnProvider.ProxyReq(ctx, update)
} if err != nil {
zerolog.Ctx(aw.appCtx).Debug(). zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
Str("station", station.Name). return
Msg("proxied weather update to awn") }
zerolog.Ctx(aw.appCtx).Debug().
Str("station", station.Name).
Msg("proxied weather update to awn")
}()
} }
if station.ProxyToWunderground { if station.ProxyToWunderground {
err := aw.wuProvider.ProxyReq(ctx, update) proxyWg.Add(1)
if err != nil { go func() {
zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather") defer proxyWg.Done()
return err := aw.wuProvider.ProxyReq(ctx, update)
} if err != nil {
zerolog.Ctx(aw.appCtx).Debug(). zerolog.Ctx(aw.appCtx).Err(err).Msg("failed to proxy to ambient weather")
Str("station", station.Name). return
Msg("proxied weather update to wunderground") }
zerolog.Ctx(aw.appCtx).Debug().
Str("station", station.Name).
Msg("proxied weather update to wunderground")
}()
} }
proxyWg.Wait()
} }
} }