View on GitHub

Wingu's Open Source Projects

Failnozzle

Send exception emails without throttling your Inbox

Collect exception logs from your servers, dedupe them and send an aggregate email every minute. Failnozzle exists to prevent your servers from saturating your mail queue with thousands of identical error messages.

flask_filters

Decorators to wrap Flask views with coroutine filters

Move repetitive tasks out of your views. The decorators in flask_filters wrap your views with reusable, composable coroutines that execute before and after your view functions. At Wingu, we use filters to check user authorization, build site navigation, apply feature flags, and more.

flask_viewunit

Unit test Flask views, from URL routing to response

If Selenium and Watir are overkill for unit testing your Flask app, but using Flask's test client is a little too bare, flask_viewunit can help. Provides a shorthand for testing requests, simulating logged in users, and making common assertions about the view's output and database side effects.

Smuggle

Mostly-safely import Python modules from outside sys.path

Sometimes you just need to import a module, no questions asked. In an ideal world, no one would smuggle modules, but if you have to do it, smuggle.py will leave sys.path exactly as it found it. Useful for tests (especially integration tests) or deploy scripting that wants to mess with the import path as little as possible.

Tracewhack

Find known issues for error tracebacks

Tracewhack helps identify known bugs by matching Python tracebacks to Github issues. Useful for when you're on call and don't want to dig through your bug database to find out if you've seen a problem before.

Zero-downtime deploys with Gunicorn and virtualenv

Our notes on setting up reliable zero-downtime deployment of our web application

Setting up truly zero-downtime deploys with Gunicorn and virtualenv can be a little tricky. We've compiled some notes on the challenges and our solution, and we include an implementation using Gunicorn's hooks.

License

The above projects are licensed under the BSD 3 Clause License, which is included as license.txt in each repository. Here is a summary in plain, non-legally-binding English.