Skip to content

Instantly share code, notes, and snippets.

@callhub
callhub / rate_check.lua
Created February 3, 2014 09:48
Lua script for atomic API rate checking in Redis
local current, expected, cur_val, callcount, maxcps
current = redis.call('GET', KEYS[1])
callcount = tonumber(ARGV[1])
maxcps = tonumber(ARGV[2])
cur_val = 0
if current then
cur_val = tonumber(current)
end
expected = cur_val + callcount
if expected > maxcps then
@callhub
callhub / distributed_rate_limiting.py
Created February 3, 2014 08:41
Distributed rate limiting put together
script = "\
local current, expected, cur_val, callcount, maxcps \
current = redis.call('GET', KEYS[1]) \
callcount = tonumber(ARGV[1]) \
maxcps = tonumber(ARGV[2]) \
cur_val = 0 \
if current then \
cur_val = tonumber(current) \
end \
expected = cur_val + callcount \
@callhub
callhub / celery_retry.py
Created February 3, 2014 08:37
Retrying a Celery Task at a later time
ret = is_rate_okay(keys=[rate_key],
args=[call_count, max_cps])
if ret is None:
plivo_call.retry(countdown=randint(60,120))
return False