Skip to content

A Python library for rate-limiting on App Engine using Memcache

License

Notifications You must be signed in to change notification settings

peterjliu/rate_limit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A simple rate-limiting library for Python App Engine that uses Memcache to keep track of quota.

You might use this library to rate-limit users of your endpoints. Because Memcache can handle a much higher rate of requests (QPS) you can also use this to prevent an abuser from depleting your Datastore quota (denial-of-service attack), e.g. by rate-limiting by IP subnet.

# Example usage

from rate_limit.lib import Limiter, QuotaKey

# Define event types to rate-limit
class Events:
  USER_READ = 1
  USER_WRITE = 2

RATE_LIMIT_SPEC = {
  # Limit User reads QPS to 10, and writes to 1
  Events.USER_READ: (10, 1)
  Events.USER_WRITE: (1, 1)

  # Limit 1 requests every 2 seconds i.e. 0.5 qps
  Events.SMS_VERIFY: (1, 2)
}

l = Limiter(RATE_LIMIT_SPEC)
q = QuotaKey("user1", Events.USER_READ)

try:
  if l.CanSpend(q):
    // Do something expensive
    pass
  else:
    // Return error message, e.g. "Max QPS hit"
    pass
except rate_limit.lib.MemcacheWriteError:
  // Write failed. Need more Memcache provisioned?
  pass

About

A Python library for rate-limiting on App Engine using Memcache

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages