`u'%s may not ...: %s' % (crash_id, e)`. You'll need the leading `u`, because otherwise it calls `__str__` on the exception, which delegates to `__repr__`, which returns something like `<ElasticHttpError object at 0x107c89392>`. Probably I should add a `__str__` method to `ElasticHttpError` which just picks an arbitrary encoding (utf-8), icky as that may be.