Skip to content

Instantly share code, notes, and snippets.

I may be slow to respond.

David Cramer dcramer

I may be slow to respond.
View GitHub Profile
View gist:942761
Patches the database wrapper and template engine to throw an exception if a query is executed inside of a template.
In your, enable it like so:
>>> import monkey
>>> monkey.patch_templates()
import logging
dcramer / Questions
Created Jun 21, 2011
Kiwi Pycon Give-away
View Questions
GitHub username: dcramer
Day job: DISQUS
Favorite open source project: Django
Open Source contributions (if any): Sentry, Gargoyle, Debug Toolbar, <100 more>
Stranded on an island, what 3 items do you take: Laptop, Mobile Phone, and as much alcohol as I can manage :)
Tie-breaker, pick a number between 1 and 20,000: 20,000
dcramer / gist:1163531
Created Aug 22, 2011 — forked from voodootikigod/gist:1155790
PyCodeConf Ticket Give-away
View gist:1163531
Day job:
I build cool Python things at Disqus
Favorite Python project:
Does it count if I pick my own? :)
View gist:1268426
"data": {
"__sentry__": {
"frames": [
"filename": filename,
"module": module,
"function": function,
"lineno": ...,
"vars": {
"key": "value"
View gist:1526468
# install requirements from github
pip install git+ssh://
pip install git+ssh://
# start sentry webserver
sentry start
# add raven to whatever app
# e.g. Django:
dcramer / gist:1618119
Created Jan 16, 2012
Using Sentry from Heroku outside of Heroku
View gist:1618119
# create a dummy heroku app
heroku create --stack cedar
# add sentry
heroku addons:add sentry
# fetch your config
heroku config | grep SENTRY_DSN
# configure your application via
View gist:1755549
def ManagerMock(manager, return_value=None):
>>> objects = ManagerMock(Post.objects, ['queryset', 'result'])
>>> assert objects.filter() == objects.all()
return_value = return_value or []
class ManagerMock(mock.MagicMock):
def _get_child_mock(self, **kwargs):
View gist:2474362
Getting Play to work:
- Change Gemfile.lock's version of mocha to be 0.11.1
- Open iTunes -> select iTunes DJ -> Start playing a song
Some caveats:
- iTunes Match songs (that are not on disk) won't queue
- Frontend seems sluggish, but it could be the machine it's on (not super powerful, but should be able to keep up)
View gist:2475204
with cache.Lock('key name'[, timeout]):
# do something that usually has a race thats too hard to solve
# best example
def get_or_create(model, **kwargs):
with cache.Lock('get_or_create:%s:%s' % (model, make_key(kwargs)):
View gist:2475266
class Lock(object):
Uses the defined cache backend to create a lock.
>>> with Lock('key name'):
>>> # do something
def __init__(self, lock_key, timeout=10, cache=None):
if cache is None:
self.cache = _cache