diff --git a/lower-constraints.txt b/lower-constraints.txt
index 413eac4ba..17fa41058 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -8,10 +8,8 @@ dogpile.cache==0.6.2
 enum34==1.0.4;python_version=='2.7'
 falcon==1.1.0
 fixtures==3.0.0
-flake8==2.5.5
 future==0.16.0
 futurist==1.2.0
-hacking==0.12.0
 iso8601==0.1.11
 jsonschema==2.6.0
 keystoneauth1==3.4.0
@@ -39,7 +37,6 @@ oslo.utils==3.33.0
 oslotest==3.2.0
 osprofiler==1.4.0
 pbr==2.0.0
-pep8==1.5.7
 Pygments==2.2.0
 pymongo==3.6.0
 PyMySQL==0.7.6
diff --git a/samples/html/confirmation_web_service_sample.py b/samples/html/confirmation_web_service_sample.py
index 0470eef51..c7bb09172 100644
--- a/samples/html/confirmation_web_service_sample.py
+++ b/samples/html/confirmation_web_service_sample.py
@@ -81,6 +81,7 @@ class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
         data = {'confirmed': confirmed_value}
         requests.put(url=url, data=json.dumps(data), headers=headers)
 
+
 Handler = ServerHandler
 httpd = SocketServer.TCPServer(("", PORT), Handler)
 httpd.serve_forever()
diff --git a/samples/zaqar/subscriber_service_sample.py b/samples/zaqar/subscriber_service_sample.py
index 2c4d38dd7..9a19872c1 100644
--- a/samples/zaqar/subscriber_service_sample.py
+++ b/samples/zaqar/subscriber_service_sample.py
@@ -74,6 +74,7 @@ class ServerHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
         data = {'confirmed': True}
         requests.put(url=url, data=json.dumps(data), headers=headers)
 
+
 Handler = ServerHandler
 httpd = SocketServer.TCPServer(("", PORT), Handler)
 httpd.serve_forever()
diff --git a/test-requirements.txt b/test-requirements.txt
index 1c0f32568..ab39b5d5d 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -2,7 +2,7 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 # Metrics and style
-hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
+hacking>=3.0,<3.1.0 # Apache-2.0
 
 # Packaging
 mock>=2.0.0 # BSD
diff --git a/tox.ini b/tox.ini
index f2edc28c8..e6a224b2f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -92,6 +92,15 @@ exclude = .venv*,.git,.tox,dist,doc,*lib/python*,*.egg,.update-venv
 max-complexity = 20
 # [H904] Delay string interpolations at logging calls.
 enable-extensions=H904
+# Ignored extensions, might be enabled again after review:
+# E123 closing bracket does not match indentation of opening bracket's line
+# E226 missing whitespace around arithmetic operator
+# E241 multiple spaces after ','
+# E402 module level import not at top of file
+# E731 do not assign a lambda expression, use a def
+# W503 line break before binary operator
+# W504 line break after binary operator
+ignore = E123,E226,E241,E402,E731,W503,W504
 
 [doc8]
 # File extensions to check
@@ -100,8 +109,10 @@ extensions = .rst, .yaml
 # Let's not get far more in.
 max-line-length = 80
 
-[hacking]
-local-check-factory = zaqar.hacking.checks.factory
+[flake8:local-plugins]
+extension =
+  N537 = checks:no_translate_logs
+paths = ./zaqar/hacking
 
 [testenv:lower-constraints]
 deps =
diff --git a/zaqar/api/v1/response.py b/zaqar/api/v1/response.py
index 6b0fe19de..c7d807b01 100644
--- a/zaqar/api/v1/response.py
+++ b/zaqar/api/v1/response.py
@@ -34,8 +34,8 @@ class ResponseSchema(api.Api):
             "properties": {
                 "href": {
                     "type": "string",
-                    "pattern": "^(/v1/queues/[a-zA-Z0-9_-]"
-                    "{1,64}/messages/[a-zA-Z0-9_-]+)$"
+                    "pattern": r"^(/v1/queues/[a-zA-Z0-9_-]"
+                    r"{1,64}/messages/[a-zA-Z0-9_-]+)$"
                 },
                 "age": age,
                 "ttl": {
@@ -54,9 +54,9 @@ class ResponseSchema(api.Api):
 
         claim_href = {
             "type": "string",
-            "pattern": "^(/v1/queues/[a-zA-Z0-9_-]{1,64}"
-            "/messages/[a-zA-Z0-9_-]+)"
-            "\?claim_id=[a-zA-Z0-9_-]+$"
+            "pattern": r"^(/v1/queues/[a-zA-Z0-9_-]{1,64}"
+            r"/messages/[a-zA-Z0-9_-]+)"
+            r"\?claim_id=[a-zA-Z0-9_-]+$"
         }
 
         self.schema = {
@@ -74,7 +74,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    "pattern": "^/v1/queues\?",
+                                    "pattern": r"^/v1/queues\?",
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -90,12 +90,12 @@ class ResponseSchema(api.Api):
                             'properties': {
                                 'name': {
                                     'type': 'string',
-                                    'pattern': '^[a-zA-Z0-9_-]{1,64}$'
+                                    'pattern': r'^[a-zA-Z0-9_-]{1,64}$'
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1/queues/'
-                                               '[a-zA-Z0-9_-]{1,64}$',
+                                    'pattern': r'^/v1/queues/'
+                                               r'[a-zA-Z0-9_-]{1,64}$',
                                 },
                                 'metadata': {
                                     'type': 'object',
@@ -158,7 +158,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1/pools\?'
+                                    'pattern': r'^/v1/pools\?'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -172,8 +172,8 @@ class ResponseSchema(api.Api):
                             'properties': {
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1/'
-                                               'pools/[a-zA-Z0-9_-]{1,64}$'
+                                    'pattern': r'^/v1/'
+                                               r'pools/[a-zA-Z0-9_-]{1,64}$'
                                 },
                                 'weight': {
                                     'type': 'number',
@@ -212,8 +212,8 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1/queues/[a-zA-Z0-9_-]+'
-                                               '/messages\?(.)*$'
+                                    'pattern': r'^/v1/queues/[a-zA-Z0-9_-]+'
+                                               r'/messages\?(.)*$'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -269,8 +269,8 @@ class ResponseSchema(api.Api):
                     },
                     'href': {
                         'type': 'string',
-                        'pattern': '^/v1/queues/[a-zA-Z0-9_-]+'
-                                   '/claims/[a-zA-Z0-9_-]+$'
+                        'pattern': r'^/v1/queues/[a-zA-Z0-9_-]+'
+                                   r'/claims/[a-zA-Z0-9_-]+$'
                     },
                     'messages': {
                         "type": "array",
diff --git a/zaqar/api/v1_1/response.py b/zaqar/api/v1_1/response.py
index e1d8cf96e..ae1995f41 100644
--- a/zaqar/api/v1_1/response.py
+++ b/zaqar/api/v1_1/response.py
@@ -37,8 +37,8 @@ class ResponseSchema(api.Api):
                 },
                 "href": {
                     "type": "string",
-                    "pattern": "^(/v1\.1/queues/[a-zA-Z0-9_-]{1,64}"
-                    "/messages/[a-zA-Z0-9_-]+)(\?claim_id=[a-zA-Z0-9_-]+)?$"
+                    "pattern": r"^(/v1\.1/queues/[a-zA-Z0-9_-]{1,64}"
+                    r"/messages/[a-zA-Z0-9_-]+)(\?claim_id=[a-zA-Z0-9_-]+)?$"
                 },
                 "age": age,
                 "ttl": {
@@ -60,9 +60,9 @@ class ResponseSchema(api.Api):
 
         claim_href = {
             "type": "string",
-            "pattern": "^(/v1\.1/queues/[a-zA-Z0-9_-]{1,64}"
-            "/messages/[a-zA-Z0-9_-]+)"
-            "\?claim_id=[a-zA-Z0-9_-]+$"
+            "pattern": r"^(/v1\.1/queues/[a-zA-Z0-9_-]{1,64}"
+            r"/messages/[a-zA-Z0-9_-]+)"
+            r"\?claim_id=[a-zA-Z0-9_-]+$"
         }
 
         flavor = {
@@ -70,7 +70,7 @@ class ResponseSchema(api.Api):
             'properties': {
                 'href': {
                     'type': 'string',
-                    'pattern': '^/v1\.1/flavors/[a-zA-Z0-9_-]{1,64}$'
+                    'pattern': r'^/v1\.1/flavors/[a-zA-Z0-9_-]{1,64}$'
                 },
                 'pool': {
                     'type': 'string',
@@ -116,7 +116,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    "pattern": "^/v1\.1/queues\?",
+                                    "pattern": r"^/v1\.1/queues\?",
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -137,8 +137,8 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1\.1/queues/'
-                                               '[a-zA-Z0-9_-]{1,64}$',
+                                    'pattern': r'^/v1\.1/queues/'
+                                               r'[a-zA-Z0-9_-]{1,64}$',
                                 },
                                 'metadata': {
                                     'type': 'object',
@@ -202,7 +202,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1\.1/pools\?'
+                                    'pattern': r'^/v1\.1/pools\?'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -216,8 +216,8 @@ class ResponseSchema(api.Api):
                             'properties': {
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1\.1/'
-                                               'pools/[a-zA-Z0-9_-]{1,64}$'
+                                    'pattern': r'^/v1\.1/'
+                                               r'pools/[a-zA-Z0-9_-]{1,64}$'
                                 },
                                 'weight': {
                                     'type': 'number',
@@ -259,8 +259,8 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1\.1/queues/[a-zA-Z0-9_-]+'
-                                               '/messages\?(.)*$'
+                                    'pattern': r'^/v1\.1/queues/[a-zA-Z0-9_-]+'
+                                               r'/messages\?(.)*$'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -293,8 +293,8 @@ class ResponseSchema(api.Api):
                     },
                     'href': {
                         'type': 'string',
-                        'pattern': '^/v1\.1/pools/'
-                                   '[a-zA-Z0-9_\-]+$'
+                        'pattern': r'^/v1\.1/pools/'
+                                   r'[a-zA-Z0-9_\-]+$'
                     },
                     'options': {
                         'type': 'object',
@@ -352,8 +352,8 @@ class ResponseSchema(api.Api):
                     },
                     'href': {
                         'type': 'string',
-                        'pattern': '^/v1\.1/queues/[a-zA-Z0-9_-]+'
-                                   '/claims/[a-zA-Z0-9_-]+$'
+                        'pattern': r'^/v1\.1/queues/[a-zA-Z0-9_-]+'
+                                   r'/claims/[a-zA-Z0-9_-]+$'
                     },
                     'messages': {
                         "type": "array",
@@ -398,7 +398,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v1\.1/flavors\?'
+                                    'pattern': r'^/v1\.1/flavors\?'
                                 }
                             },
                             'required': ['rel', 'href'],
diff --git a/zaqar/api/v2/endpoints.py b/zaqar/api/v2/endpoints.py
index 40723eeef..b0224f8f1 100644
--- a/zaqar/api/v2/endpoints.py
+++ b/zaqar/api/v2/endpoints.py
@@ -434,7 +434,7 @@ class Endpoints(object):
             try:
                 queue_meta = self._queue_controller.get_metadata(queue_name,
                                                                  project_id)
-            except storage_errors.DoesNotExist as ex:
+            except storage_errors.DoesNotExist:
                 self._validate.queue_identification(queue_name, project_id)
                 self._queue_controller.create(queue_name, project=project_id)
                 # NOTE(flwang): Queue is created in lazy mode, so no metadata
diff --git a/zaqar/api/v2/response.py b/zaqar/api/v2/response.py
index d21d69c7c..a28c7f3ce 100644
--- a/zaqar/api/v2/response.py
+++ b/zaqar/api/v2/response.py
@@ -37,8 +37,8 @@ class ResponseSchema(api.Api):
                 },
                 "href": {
                     "type": "string",
-                    "pattern": "^(/v1/queues/[a-zA-Z0-9_-]{1,64}"
-                    "/messages/[a-zA-Z0-9_-]+)(\?claim_id=[a-zA-Z0-9_-]+)?$"
+                    "pattern": r"^(/v1/queues/[a-zA-Z0-9_-]{1,64}"
+                    r"/messages/[a-zA-Z0-9_-]+)(\?claim_id=[a-zA-Z0-9_-]+)?$"
                 },
                 "age": age,
                 "ttl": {
@@ -61,9 +61,9 @@ class ResponseSchema(api.Api):
 
         claim_href = {
             "type": "string",
-            "pattern": "^(/v2/queues/[a-zA-Z0-9_-]{1,64}"
-            "/messages/[a-zA-Z0-9_-]+)"
-            "\?claim_id=[a-zA-Z0-9_-]+$"
+            "pattern": r"^(/v2/queues/[a-zA-Z0-9_-]{1,64}"
+            r"/messages/[a-zA-Z0-9_-]+)"
+            r"\?claim_id=[a-zA-Z0-9_-]+$"
         }
 
         flavor = {
@@ -71,7 +71,7 @@ class ResponseSchema(api.Api):
             'properties': {
                 'href': {
                     'type': 'string',
-                    'pattern': '^/v2/flavors/[a-zA-Z0-9_-]{1,64}$'
+                    'pattern': r'^/v2/flavors/[a-zA-Z0-9_-]{1,64}$'
                 },
                 'pool': {
                     'type': 'string',
@@ -117,7 +117,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    "pattern": "^/v2/queues\?",
+                                    "pattern": r"^/v2/queues\?",
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -134,12 +134,12 @@ class ResponseSchema(api.Api):
                             'properties': {
                                 'name': {
                                     'type': 'string',
-                                    'pattern': '^[a-zA-Z0-9_-]{1,64}$'
+                                    'pattern': r'^[a-zA-Z0-9_-]{1,64}$'
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v2/queues/'
-                                               '[a-zA-Z0-9_-]{1,64}$',
+                                    'pattern': r'^/v2/queues/'
+                                               r'[a-zA-Z0-9_-]{1,64}$',
                                 },
                                 'metadata': {
                                     'type': 'object',
@@ -203,7 +203,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v2/pools\?'
+                                    'pattern': r'^/v2/pools\?'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -217,8 +217,8 @@ class ResponseSchema(api.Api):
                             'properties': {
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v2/'
-                                               'pools/[a-zA-Z0-9_-]{1,64}$'
+                                    'pattern': r'^/v2/'
+                                               r'pools/[a-zA-Z0-9_-]{1,64}$'
                                 },
                                 'weight': {
                                     'type': 'number',
@@ -260,8 +260,8 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v2/queues/[a-zA-Z0-9_-]+'
-                                               '/messages\?(.)*$'
+                                    'pattern': r'^/v2/queues/[a-zA-Z0-9_-]+'
+                                               r'/messages\?(.)*$'
                                 }
                             },
                             'required': ['rel', 'href'],
@@ -294,8 +294,8 @@ class ResponseSchema(api.Api):
                     },
                     'href': {
                         'type': 'string',
-                        'pattern': '^/v2/pools/'
-                                   '[a-zA-Z0-9_\-]+$'
+                        'pattern': r'^/v2/pools/'
+                                   r'[a-zA-Z0-9_\-]+$'
                     },
                     'options': {
                         'type': 'object',
@@ -353,8 +353,8 @@ class ResponseSchema(api.Api):
                     },
                     'href': {
                         'type': 'string',
-                        'pattern': '^/v2/queues/[a-zA-Z0-9_-]+'
-                                   '/claims/[a-zA-Z0-9_-]+$'
+                        'pattern': r'^/v2/queues/[a-zA-Z0-9_-]+'
+                                   r'/claims/[a-zA-Z0-9_-]+$'
                     },
                     'messages': {
                         "type": "array",
@@ -399,7 +399,7 @@ class ResponseSchema(api.Api):
                                 },
                                 'href': {
                                     'type': 'string',
-                                    'pattern': '^/v2/flavors\?'
+                                    'pattern': r'^/v2/flavors\?'
                                 }
                             },
                             'required': ['rel', 'href'],
diff --git a/zaqar/cmd/status.py b/zaqar/cmd/status.py
index c1551e278..efb8d0431 100644
--- a/zaqar/cmd/status.py
+++ b/zaqar/cmd/status.py
@@ -50,5 +50,6 @@ def main():
     return upgradecheck.main(
         cfg.CONF, project='zaqar', upgrade_command=Checks())
 
+
 if __name__ == '__main__':
     sys.exit(main())
diff --git a/zaqar/hacking/checks.py b/zaqar/hacking/checks.py
index b8007f264..efaa253fc 100644
--- a/zaqar/hacking/checks.py
+++ b/zaqar/hacking/checks.py
@@ -14,6 +14,7 @@
 
 import re
 
+from hacking import core
 
 _all_log_levels = {'critical', 'error', 'exception', 'info',
                    'warning', 'debug'}
@@ -28,6 +29,7 @@ _log_translation_hint = re.compile(
     })
 
 
+@core.flake8ext
 def no_translate_logs(logical_line):
     """N537 - Don't translate logs.
 
@@ -45,7 +47,3 @@ def no_translate_logs(logical_line):
     """
     if _log_translation_hint.match(logical_line):
         yield (0, "N537: Log messages should not be translated!")
-
-
-def factory(register):
-    register(no_translate_logs)
diff --git a/zaqar/storage/redis/messages.py b/zaqar/storage/redis/messages.py
index 183f0fb51..51f4eb38f 100644
--- a/zaqar/storage/redis/messages.py
+++ b/zaqar/storage/redis/messages.py
@@ -404,7 +404,7 @@ class MessageController(storage.Message, scripting.Mixin):
         # for performance.
         with self._client.pipeline() as pipe:
             for mid in message_ids:
-                    pipe.hgetall(mid)
+                pipe.hgetall(mid)
 
             messages = pipe.execute()
 
@@ -578,6 +578,7 @@ def _filter_messages(messages, filters, to_basic, marker):
             else:
                 yield msg
 
+
 QUEUES_SET_STORE_NAME = 'queues_set'
 
 
diff --git a/zaqar/storage/redis/utils.py b/zaqar/storage/redis/utils.py
index 7669cb162..c9519af1f 100644
--- a/zaqar/storage/redis/utils.py
+++ b/zaqar/storage/redis/utils.py
@@ -69,6 +69,7 @@ def scope_queue_name(queue=None, project=None):
     # TODO(prashanthr_) : Try to reuse this utility. Violates DRY
     return normalize_none_str(project) + '.' + normalize_none_str(queue)
 
+
 # NOTE(prashanthr_): Aliase the scope_queue_name function
 # to be used in the pools and claims controller as similar
 # functionality is required to scope redis id's.
diff --git a/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py b/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py
index 7a667c26e..76cb241f2 100644
--- a/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py
+++ b/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py
@@ -90,6 +90,7 @@ def run_migrations_online():
     finally:
         connection.close()
 
+
 if context.is_offline_mode():
     run_migrations_offline()
 else:
diff --git a/zaqar/transport/validation.py b/zaqar/transport/validation.py
index e66784b3f..bcb271c2d 100644
--- a/zaqar/transport/validation.py
+++ b/zaqar/transport/validation.py
@@ -34,7 +34,7 @@ MIN_SUBSCRIPTION_TTL = 60
 _PURGBLE_RESOURCE_TYPES = {'messages', 'subscriptions'}
 # NOTE(kgriffs): Don't use \w because it isn't guaranteed to match
 # only ASCII characters.
-QUEUE_NAME_REGEX = re.compile('^[a-zA-Z0-9_\-.]+$')
+QUEUE_NAME_REGEX = re.compile(r'^[a-zA-Z0-9_\-.]+$')
 QUEUE_NAME_MAX_LEN = 64
 PROJECT_ID_MAX_LEN = 256
 
@@ -125,7 +125,7 @@ class Validator(object):
         if not pointer.startswith('/'):
             msg = _('Pointer `%s` does not start with "/".') % pointer
             raise ValidationFailed(msg)
-        if re.search('/\s*?/', pointer[1:]):
+        if re.search(r'/\s*?/', pointer[1:]):
             msg = _('Pointer `%s` contains adjacent "/".') % pointer
             raise ValidationFailed(msg)
         if len(pointer) > 1 and pointer.endswith('/'):
@@ -134,7 +134,7 @@ class Validator(object):
         if pointer[1:].strip() == '/':
             msg = _('Pointer `%s` does not contains valid token.') % pointer
             raise ValidationFailed(msg)
-        if re.search('~[^01]', pointer) or pointer.endswith('~'):
+        if re.search(r'~[^01]', pointer) or pointer.endswith('~'):
             msg = _('Pointer `%s` contains "~" not part of'
                     ' a recognized escape sequence.') % pointer
             raise ValidationFailed(msg)
diff --git a/zaqar/transport/wsgi/v1_0/stats.py b/zaqar/transport/wsgi/v1_0/stats.py
index fd45076ae..00fae43ed 100644
--- a/zaqar/transport/wsgi/v1_0/stats.py
+++ b/zaqar/transport/wsgi/v1_0/stats.py
@@ -54,7 +54,7 @@ class Resource(object):
             resp.body = utils.to_json(resp_dict)
             # status defaults to 200
 
-        except storage_errors.QueueIsEmpty as ex:
+        except storage_errors.QueueIsEmpty:
             resp_dict = {
                 'messages': {
                     'claimed': 0,
diff --git a/zaqar/transport/wsgi/v1_1/stats.py b/zaqar/transport/wsgi/v1_1/stats.py
index 646312eb8..d1bf76bc6 100644
--- a/zaqar/transport/wsgi/v1_1/stats.py
+++ b/zaqar/transport/wsgi/v1_1/stats.py
@@ -54,7 +54,7 @@ class Resource(object):
             # status defaults to 200
 
         except (storage_errors.QueueDoesNotExist,
-                storage_errors.QueueIsEmpty) as ex:
+                storage_errors.QueueIsEmpty):
             resp_dict = {
                 'messages': {
                     'claimed': 0,
diff --git a/zaqar/transport/wsgi/v2_0/messages.py b/zaqar/transport/wsgi/v2_0/messages.py
index e61b136c9..57d5fc466 100644
--- a/zaqar/transport/wsgi/v2_0/messages.py
+++ b/zaqar/transport/wsgi/v2_0/messages.py
@@ -177,7 +177,7 @@ class CollectionResource(object):
             try:
                 queue_meta = self._queue_controller.get_metadata(queue_name,
                                                                  project_id)
-            except storage_errors.DoesNotExist as ex:
+            except storage_errors.DoesNotExist:
                 self._validate.queue_identification(queue_name, project_id)
                 self._queue_controller.create(queue_name, project=project_id)
                 # NOTE(flwang): Queue is created in lazy mode, so no metadata
diff --git a/zaqar/transport/wsgi/v2_0/queues.py b/zaqar/transport/wsgi/v2_0/queues.py
index ac0437dcd..014bbeb13 100644
--- a/zaqar/transport/wsgi/v2_0/queues.py
+++ b/zaqar/transport/wsgi/v2_0/queues.py
@@ -208,7 +208,7 @@ class ItemResource(object):
         except validation.ValidationFailed as ex:
             LOG.debug(ex)
             raise wsgi_errors.HTTPBadRequestBody(six.text_type(ex))
-        except wsgi_errors.HTTPConflict as ex:
+        except wsgi_errors.HTTPConflict:
             raise
         except Exception:
             description = _(u'Queue could not be updated.')
diff --git a/zaqar/transport/wsgi/v2_0/stats.py b/zaqar/transport/wsgi/v2_0/stats.py
index d8dbfce86..1bdcef448 100644
--- a/zaqar/transport/wsgi/v2_0/stats.py
+++ b/zaqar/transport/wsgi/v2_0/stats.py
@@ -58,7 +58,7 @@ class Resource(object):
             # status defaults to 200
 
         except (storage_errors.QueueDoesNotExist,
-                storage_errors.QueueIsEmpty) as ex:
+                storage_errors.QueueIsEmpty):
             resp_dict = {
                 'messages': {
                     'claimed': 0,
diff --git a/zaqar/transport/wsgi/v2_0/topic.py b/zaqar/transport/wsgi/v2_0/topic.py
index 6fb7aad2c..7f1bc3b08 100644
--- a/zaqar/transport/wsgi/v2_0/topic.py
+++ b/zaqar/transport/wsgi/v2_0/topic.py
@@ -205,7 +205,7 @@ class ItemResource(object):
         except validation.ValidationFailed as ex:
             LOG.debug(ex)
             raise wsgi_errors.HTTPBadRequestBody(six.text_type(ex))
-        except wsgi_errors.HTTPConflict as ex:
+        except wsgi_errors.HTTPConflict:
             raise
         except Exception:
             description = _(u'Topic could not be updated.')
diff --git a/zaqar/transport/wsgi/v2_0/topic_stats.py b/zaqar/transport/wsgi/v2_0/topic_stats.py
index 0c42fb61e..bd0d84547 100644
--- a/zaqar/transport/wsgi/v2_0/topic_stats.py
+++ b/zaqar/transport/wsgi/v2_0/topic_stats.py
@@ -58,7 +58,7 @@ class Resource(object):
             # status defaults to 200
 
         except (storage_errors.TopicDoesNotExist,
-                storage_errors.TopicIsEmpty) as ex:
+                storage_errors.TopicIsEmpty):
             resp_dict = {
                 'messages': {
                     'claimed': 0,