Ejemplo n.º 1
0
    def route_requests(self, req, body):
        owner_id = req.getHeader('x-owner-id')
        req_limit = self.config.request_limit

        if (yield self.req_limit_reached(owner_id)):
            self.log(
                "Request limit reached for %s at a request count of %d"
                % (owner_id, req_limit))

            returnValue(response(req, {
                'errors': [{
                    'type': 'too_many_requests',
                    'message': (
                        "Only %d unfinished requests are allowed per owner"
                        % (req_limit))
                }]
            }, code=429))
        else:
            data = {
                'owner_id': req.getHeader('x-owner-id'),
                'timestamp': time.time(),
                'request': body['request'],
                'intervals': body['intervals']
            }

            self.log("Adding request to pending set", data)
            yield add_pending(self.redis, self.prefix, data)
            yield inc_req_count(self.redis, self.prefix, owner_id)
            returnValue(response(req, {}))
Ejemplo n.º 2
0
    def test_req_count(self):
        self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 0)

        yield inc_req_count(self.redis, 'test', '1234')
        self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 1)

        yield dec_req_count(self.redis, 'test', '1234')
        self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 0)

        yield set_req_count(self.redis, 'test', '1234', 3)
        self.assertEqual((yield get_req_count(self.redis, 'test', '1234')), 3)