There’s no built in background workers, but you could, as you said, use a match dedicated to flush those periodically, or if using the Go runtime, you could just have a background Goroutine that does it.
But I think your suggestion of doing it asynchronously from the client may be the simpler option, and just have the server relay it to Steam.