Skip to content

Instantly share code, notes, and snippets.

Scaling your API with rate limiters

The following are examples of the four types rate limiters discussed in the accompanying blog post. In the examples below I've used pseudocode-like Ruby, so if you're unfamiliar with Ruby you should be able to easily translate this approach to other languages. Complete examples in Ruby are also provided later in this gist.

In most cases you'll want all these examples to be classes, but I've used simple functions here to keep the code samples brief.

Request rate limiter

This uses a basic token bucket algorithm and relies on the fact that Redis scripts execute atomically. No other operations can run between fetching the count and writing the new count.

@attacus
attacus / riot-matrix-workshop.md
Last active April 8, 2025 08:18
Create your own encrypted chat server with Riot and Matrix

This guide is unmaintained and was created for a specific workshop in 2017. It remains as a legacy reference. Use at your own risk.

Running your own encrypted chat service with Matrix and Riot

Workshop Instructor:

This workshop is distributed under a CC BY-SA 4.0 license.

What are we doing here?

@wchargin
wchargin / transforms.py
Created August 18, 2015 01:55
affine transforms on PIL images
"""A library for describing and applying affine transforms to PIL images."""
import numpy as np
import PIL.Image
class RGBTransform(object):
"""A description of an affine transformation to an RGB image.
This class is immutable.
@tclancy
tclancy / Nginx Performance Logging Hack
Created May 29, 2014 20:58
Nginx configuration to log datetime, bytes sent and total request time for cowboy performance monitoring on local server. Also ignores a bunch of static file types to keep the logs clean.
map $request $loggable {
~*\.css|\.js|\.png|\.woff 0;
default 1;
}
log_format slim '[$time_local] - $body_bytes_sent - $request_time - "$request" $status';
include bcore/local-nginx-default;
include mime.types;
default_type application/octet-stream;
access_log /path/to/access.log slim if=$loggable;
@mesuutt
mesuutt / django-template-filters.py
Last active October 1, 2020 06:39
Useful django template tags and filters
# coding: utf-8
import json
from django import template
from django.utils.dateparse import parse_datetime
from django.utils.html import mark_safe
register = template.Library()