From 5f61b928f8b9c6a22832445c103248b9559c38a2 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 26 Sep 2021 04:33:08 +0000 Subject: [PATCH] Use limits instead of periods --- client/client.go | 6 ++++++ client/search.go | 1 + rules/rules.go | 4 +--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/client/client.go b/client/client.go index d436c39..cc52fba 100644 --- a/client/client.go +++ b/client/client.go @@ -70,7 +70,10 @@ func (c *Client) get(path string, values *url.Values, out interface{}) error { return err } + c.rateLimit.Acquire1() + c.concurrencyLimitRead.Acquire1() resp, err := c.client.Do(req) + c.concurrencyLimitRead.Release1() if err != nil { return err } @@ -120,7 +123,10 @@ func (c *Client) doWithBody(method string, path string, body interface{}, out in return err } + c.rateLimit.Acquire1() + c.concurrencyLimitWrite.Acquire1() resp, err := c.client.Do(req) + c.concurrencyLimitWrite.Release1() if err != nil { return err } diff --git a/client/search.go b/client/search.go index 0fb069e..bdfe727 100644 --- a/client/search.go +++ b/client/search.go @@ -84,6 +84,7 @@ func (wc *WorkspaceClient) Search(q *SearchQuery) ([]*Task, error) { for { resp := &tasksResponse{} + wc.rateLimitSearch.Acquire1() err := wc.client.get(path, values, resp) if err != nil { return nil, err diff --git a/rules/rules.go b/rules/rules.go index 65a5412..543c2e1 100644 --- a/rules/rules.go +++ b/rules/rules.go @@ -2,7 +2,6 @@ package rules import "bytes" import "fmt" -import "math/rand" import "strings" import "time" @@ -28,6 +27,7 @@ type periodic struct { var periodics = []*periodic{} +// TODO: Remove this, as it's now ignored func EverySeconds(seconds int) *periodic { ret := &periodic{ period: seconds, @@ -304,8 +304,6 @@ func (p *periodic) wait() { func (p *periodic) loop(client *client.Client) { for { - time.Sleep(time.Duration(rand.Intn(p.period)) * time.Second) - err := p.exec(client) if err != nil { fmt.Printf("ERROR: %s\n", err)