Ejemplo n.º 1
0
    def startService(self):
        Service.startService(self)
        log.msg('Service starting. servers=%r, job queue=%s, base urls=%r' %
                (self.gearmand_servers, self.job_queue, self.base_urls))
        log.verbose('Verbose logging is enabled')

        for server in self.gearmand_servers:
            host, port = server.split(':')
            f = CurlerClientFactory(self, server, self.base_urls,
                                    self.job_queue, self.num_workers)
            proto = yield reactor.connectTCP(host, int(port), f)
Ejemplo n.º 2
0
    def startService(self):
        Service.startService(self)
        log.msg('Service starting. servers=%r, job queue=%s, base urls=%r'
                % (self.gearmand_servers, self.job_queue, self.base_urls))
        log.verbose('Verbose logging is enabled')

        for server in self.gearmand_servers:
            host, port = server.split(':')
            f = CurlerClientFactory(self, server, self.base_urls,
                                    self.job_queue, self.num_workers)
            proto = yield reactor.connectTCP(host, int(port), f)
Ejemplo n.º 3
0
 def handle_job(self, job):
     time_start = time()
     try:
         log.msg('Got job: %s' % job.handle)
         log.verbose('data=%r' % job.data)
         response = yield self._make_request(job.handle, job.data)
     except Exception, e:
         log.msg('ERROR: Unhandled exception: %r' % e)
         # Log full traceback on multiple lines
         for line in traceback.format_exc().split('\n'):
             log.msg(line)
         response = {"error": "Internal curler error. Check the logs."}
Ejemplo n.º 4
0
 def handle_job(self, job):
     time_start = time()
     try:
         log.msg('Got job: %s' % job.handle)
         log.verbose('data=%r' % job.data)
         response = yield self._make_request(job.handle, job.data)
     except Exception, e:
         log.msg('ERROR: Unhandled exception: %r' % e)
         # Log full traceback on multiple lines
         for line in traceback.format_exc().split('\n'):
             log.msg(line)
         response = {"error": "Internal curler error. Check the logs."}
Ejemplo n.º 5
0
        # make sure it contains data
        if 'data' not in job_data:
            defer.returnValue(
                {"error": "Missing \"data\" property in job data"})

        headers = self.build_headers(job_data)

        # we'll post the data as JSON, so convert it back
        data = json.dumps(job_data['data'])

        # select random base URL to hit
        path = random.choice(self.base_urls)
        url = str("%s/%s" % (path, job_data['method']))

        try:
            log.verbose('POSTing to %s, data=%r' % (url, data))
            postdata = urllib.urlencode({"job_handle": handle, "data": data})

            try:
                # despite our name, we're not actually using curl :)
                response = yield getPage(url,
                                         method='POST',
                                         postdata=postdata,
                                         headers=headers)
                status = 200
            except Error, e:
                status = int(e.status)
                response = e.response
            log.verbose('POST complete: status=%d, response=%r' %
                        (status, response))
            defer.returnValue({
Ejemplo n.º 6
0
        # allow header customization
        if 'headers' not in job_data:
            headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        else:
            headers = job_data['headers']

        # we'll post the data as JSON, so convert it back
        data = json.dumps(job_data['data'])

        # select random base URL to hit
        path = random.choice(self.base_urls)
        url = str("%s/%s" % (path, job_data['method']))

        try:
            log.verbose('POSTing to %s, data=%r' % (url, data))
            postdata = urllib.urlencode({
                "job_handle": handle,
                "data": data})
            try:
                # despite our name, we're not actually using curl :)
                response = yield getPage(url, method='POST', postdata=postdata,
                                         headers=headers)
                status = 200
            except Error, e:
                status = int(e.status)
                response = e.response
            log.verbose('POST complete: status=%d, response=%r'
                             % (status, response))
            defer.returnValue({'url': url,
                               'status': status,