utils.py 515 B

12345678910111213141516171819202122
  1. from __future__ import absolute_import
  2. import sys
  3. from contextlib import contextmanager
  4. from celery.exceptions import SecurityError
  5. try:
  6. from OpenSSL import crypto
  7. except ImportError: # pragma: no cover
  8. crypto = None # noqa
  9. @contextmanager
  10. def reraise_errors(msg="%r", errors=None):
  11. assert crypto is not None
  12. errors = (crypto.Error, ) if errors is None else errors
  13. try:
  14. yield
  15. except errors, exc:
  16. raise SecurityError, SecurityError(msg % (exc, )), sys.exc_info()[2]