Last active
April 6, 2020 07:11
-
-
Save salanfe/ef49a1acca1db5e4dab3292e56c692ba to your computer and use it in GitHub Desktop.
kraken_rate_limit_test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"log" | |
"os" | |
"os/signal" | |
"syscall" | |
"time" | |
krakenapi "github.com/beldur/kraken-go-api-client" | |
) | |
var ( | |
callPeriod = 1000 * time.Millisecond | |
) | |
func main() { | |
exit := make(chan os.Signal) | |
signal.Notify(exit, syscall.SIGINT, syscall.SIGTERM) | |
since := int64(1) | |
counter := 0 | |
api := krakenapi.New("KEY", "SECRET") | |
ticker := time.NewTicker(callPeriod) | |
defer ticker.Stop() | |
currentCallTS := time.Now() | |
lastCallTS := currentCallTS | |
run := true | |
for run { | |
select { | |
case <-exit: | |
log.Println("exit signal received") | |
run = false | |
case <-ticker.C: | |
currentCallTS := time.Now() | |
response, err := api.Trades(krakenapi.XETHZEUR, since) | |
if err != nil { | |
log.Fatalf("counter=%d, error=%s", counter, err) | |
} | |
elapsedTime := currentCallTS.Sub(lastCallTS) | |
lastCallTS = currentCallTS | |
log.Printf("elapsedTime=%fs, since=%d, last=%d, len=%d, counter=%d", elapsedTime.Seconds(), since, response.Last, len(response.Trades), counter) | |
since = response.Last | |
counter++ | |
} | |
} | |
log.Println("bye") | |
} | |
/* | |
======================= | |
=== terminal output === | |
======================= | |
> go run main.go | |
2020/04/05 15:08:51 elapsedTime=1.000384s, since=1, last=1439315345846191902, len=1000, counter=0 | |
2020/04/05 15:08:51 elapsedTime=0.999945s, since=1439315345846191902, last=1439484792551644881, len=1000, counter=1 | |
2020/04/05 15:08:53 elapsedTime=1.000865s, since=1439484792551644881, last=1439571556364685313, len=1000, counter=2 | |
2020/04/05 15:08:54 elapsedTime=1.003914s, since=1439571556364685313, last=1439726137832537406, len=1000, counter=3 | |
2020/04/05 15:08:54 elapsedTime=0.999997s, since=1439726137832537406, last=1439927976765826164, len=1000, counter=4 | |
2020/04/05 15:08:56 elapsedTime=1.000010s, since=1439927976765826164, last=1440392933829755478, len=1000, counter=5 | |
2020/04/05 15:08:57 elapsedTime=0.999979s, since=1440392933829755478, last=1440654802375324420, len=1000, counter=6 | |
2020/04/05 15:08:58 elapsedTime=0.997753s, since=1440654802375324420, last=1441046786718743426, len=1000, counter=7 | |
2020/04/05 15:08:59 elapsedTime=0.997382s, since=1441046786718743426, last=1441536416078198172, len=1000, counter=8 | |
2020/04/05 15:09:00 elapsedTime=1.004833s, since=1441536416078198172, last=1441914016596588364, len=1000, counter=9 | |
2020/04/05 15:09:01 elapsedTime=0.995105s, since=1441914016596588364, last=1442139305158905052, len=1000, counter=10 | |
2020/04/05 15:09:02 elapsedTime=1.000352s, since=1442139305158905052, last=1442454423689686295, len=1000, counter=11 | |
2020/04/05 15:09:03 elapsedTime=1.000459s, since=1442454423689686295, last=1442922925355587774, len=1000, counter=12 | |
2020/04/05 15:09:04 elapsedTime=1.004124s, since=1442922925355587774, last=1443161265430067813, len=1000, counter=13 | |
2020/04/05 15:09:05 elapsedTime=0.995419s, since=1443161265430067813, last=1443477736352428678, len=1000, counter=14 | |
2020/04/05 15:09:06 elapsedTime=1.000122s, since=1443477736352428678, last=1444122950679973408, len=1000, counter=15 | |
2020/04/05 15:09:07 elapsedTime=1.000025s, since=1444122950679973408, last=1444844923719847691, len=1000, counter=16 | |
2020/04/05 15:09:08 elapsedTime=0.999422s, since=1444844923719847691, last=1445249742012374546, len=1000, counter=17 | |
2020/04/05 15:09:09 elapsedTime=1.005019s, since=1445249742012374546, last=1445547731196052660, len=1000, counter=18 | |
2020/04/05 15:09:10 elapsedTime=0.999856s, since=1445547731196052660, last=1445878986050985893, len=1000, counter=19 | |
2020/04/05 15:09:11 elapsedTime=0.997928s, since=1445878986050985893, last=1445969494471100668, len=1000, counter=20 | |
2020/04/05 15:09:12 elapsedTime=1.002216s, since=1445969494471100668, last=1446073728702588291, len=1000, counter=21 | |
2020/04/05 15:09:13 elapsedTime=0.996847s, since=1446073728702588291, last=1446186954987490424, len=1000, counter=22 | |
2020/04/05 15:09:14 elapsedTime=1.003201s, since=1446186954987490424, last=1446319316490168945, len=1000, counter=23 | |
2020/04/05 15:09:15 elapsedTime=0.995590s, since=1446319316490168945, last=1446506916584432627, len=1000, counter=24 | |
2020/04/05 15:09:16 elapsedTime=1.002388s, since=1446506916584432627, last=1446640895363494546, len=1000, counter=25 | |
2020/04/05 15:09:17 elapsedTime=0.997563s, since=1446640895363494546, last=1446828689464642107, len=1000, counter=26 | |
2020/04/05 15:09:18 elapsedTime=1.004399s, since=1446828689464642107, last=1447015038369190766, len=1000, counter=27 | |
2020/04/05 15:09:19 elapsedTime=0.999910s, since=1447015038369190766, last=1447093879681610247, len=1000, counter=28 | |
2020/04/05 15:09:20 elapsedTime=0.996807s, since=1447093879681610247, last=1447239596766382220, len=1000, counter=29 | |
2020/04/05 15:09:20 counter=30, error=Could not execute request! #7 ([EAPI:Rate limit exceeded]) | |
exit status 1 | |
*/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import krakenex | |
import decimal | |
import time | |
pair = 'XETHZEUR' | |
since = str(1) | |
k = krakenex.API() | |
def now(): | |
return decimal.Decimal(time.time()) | |
counter = 0 | |
while True: | |
ret = k.query_public('Trades', data = {'pair': pair, 'since': since}) | |
if len(ret['error']) > 0: | |
print("time=",now()," counter=",counter," err=", ret['error']) | |
break | |
last = ret['result']['last'] | |
print("ts=%.5f, counter=%d, len=%d, since=%s, last=%s" %(now(), counter, len(ret['result'][pair]), since, last)) | |
counter+=1 | |
since = last | |
time.sleep(1) | |
''' | |
======================= | |
=== terminal output === | |
======================= | |
> python3 main.py ~/python_sandbox/[email protected] | |
ts=1586155951.62600, counter=0, len=1000, since=1, last=1439315345846191902 | |
ts=1586155952.92645, counter=1, len=1000, since=1439315345846191902, last=1439484792551644881 | |
ts=1586155954.18856, counter=2, len=1000, since=1439484792551644881, last=1439571556364685313 | |
ts=1586155955.48187, counter=3, len=1000, since=1439571556364685313, last=1439726137832537406 | |
ts=1586155956.91667, counter=4, len=1000, since=1439726137832537406, last=1439927976765826164 | |
ts=1586155958.35021, counter=5, len=1000, since=1439927976765826164, last=1440392933829755478 | |
ts=1586155959.78385, counter=6, len=1000, since=1440392933829755478, last=1440654802375324420 | |
ts=1586155961.11501, counter=7, len=1000, since=1440654802375324420, last=1441046786718743426 | |
ts=1586155962.44626, counter=8, len=1000, since=1441046786718743426, last=1441536416078198172 | |
ts=1586155963.74342, counter=9, len=1000, since=1441536416078198172, last=1441914016596588364 | |
ts=1586155965.03213, counter=10, len=1000, since=1441914016596588364, last=1442139305158905052 | |
ts=1586155966.73915, counter=11, len=1000, since=1442139305158905052, last=1442454423689686295 | |
ts=1586155968.18142, counter=12, len=1000, since=1442454423689686295, last=1442922925355587774 | |
ts=1586155969.46283, counter=13, len=1000, since=1442922925355587774, last=1443161265430067813 | |
ts=1586155970.84315, counter=14, len=1000, since=1443161265430067813, last=1443477736352428678 | |
ts=1586155972.27678, counter=15, len=1000, since=1443477736352428678, last=1444122950679973408 | |
ts=1586155973.60813, counter=16, len=1000, since=1444122950679973408, last=1444844923719847691 | |
ts=1586155974.87635, counter=17, len=1000, since=1444844923719847691, last=1445249742012374546 | |
ts=1586155976.24205, counter=18, len=1000, since=1445249742012374546, last=1445547731196052660 | |
ts=1586155977.90976, counter=19, len=1000, since=1445547731196052660, last=1445878986050985893 | |
ts=1586155979.34285, counter=20, len=1000, since=1445878986050985893, last=1445969494471100668 | |
ts=1586155980.77616, counter=21, len=1000, since=1445969494471100668, last=1446073728702588291 | |
ts=1586155982.30904, counter=22, len=1000, since=1446073728702588291, last=1446186954987490424 | |
ts=1586155983.64336, counter=23, len=1000, since=1446186954987490424, last=1446319316490168945 | |
ts=1586155985.07798, counter=24, len=1000, since=1446319316490168945, last=1446506916584432627 | |
ts=1586155986.81839, counter=25, len=1000, since=1446506916584432627, last=1446640895363494546 | |
ts=1586155988.76346, counter=26, len=1000, since=1446640895363494546, last=1446828689464642107 | |
ts=1586155990.19729, counter=27, len=1000, since=1446828689464642107, last=1447015038369190766 | |
ts=1586155991.63072, counter=28, len=1000, since=1447015038369190766, last=1447093879681610247 | |
ts=1586155992.96185, counter=29, len=1000, since=1447093879681610247, last=1447239596766382220 | |
time= 1586155994.2895720005035400390625 counter= 30 err= ['EAPI:Rate limit exceeded'] | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment