Pool := &queue.Pool{}
Avoid := &duplicate.Avoid{}
go loop(Pool, Avoid)
func loop(p *queue.Pool, d *duplicate.Avoid) {
for {
key, ok := p.Pop().(string)
if ok {
ctx, fn := context.WithCancel(context.Background())
d.Push(key, fn)
go func() {
err := Post(ctx, key)
// retry
if err!=nil{
p.Push(key)
return
}
if ctx.Err() == nil {
d.Remove(key)
}
}()
}
}
}
func(w http.ResponseWriter, r *http.Request) {
key := r.URL.Query().Get("key")
Pool.Push(key)
w.Write([]byte("done"))
}
-
Notifications
You must be signed in to change notification settings - Fork 0
alexsuslov/duplicate
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published