alpacahq / alpacahq/alpaca-trade-api-go
Expose rate limit state
- 主要言語
- Go
- スター
- 429
- フォーク
- 118
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
The SDK doesn't expose the http.Response object, so it's tricky to keep track of the rate limit state. Currently I’m logging that info using an `http.RoundTripper`, but it would be good to expose it in a simpler way; e.g., to display the rate limit state in a UI.
The simplest solution might be to add a callback field to alpaca.ClientOpts that is invoked on every request. It could take a `http.Request` and `http.Response`, or it could take a new object type that contains just the rate limit info from the response. Another option would be to use a `resty.Client` instead of a `http.Client` in the `alpaca.Client`.
My current work-around is to ensure I'm reserving some rate limit buffer when polling the broker API so that I never get a 429 when I need to place orders.
```go
requestsPerTick := 4 // e.g. get account, positions, orders, fills every time we poll
pollingRate := (200.0 - 20.0) / 60.0 // 200 request per min rate limit - 20 requests per min buffer
pollingInterval := time.Duration(float64(time.Second) * float64(requestsPerTick) / pollingRate)
```
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。