コード例 #1
0
class Context(object):
    def __init__(self):
        self.service = TaskProxyService(self)
        self.datastore = None
        self.conn = None
        self.instance = None
        self.running = Event()

    def put_status(self, state, result=None, exception=None):
        obj = {'status': state, 'result': None}

        if result:
            obj['result'] = result

        if exception:
            obj['error'] = serialize_error(exception)

        self.conn.call_sync('task.put_status', obj)

    def main(self):
        if len(sys.argv) != 2:
            print("Invalid number of arguments", file=sys.stderr)
            sys.exit(errno.EINVAL)

        key = sys.argv[1]
        logging.basicConfig(file=sys.stdout, level=logging.DEBUG)
        try:
            self.datastore = get_default_datastore()
            self.conn = Client()
            self.conn.connect('127.0.0.1')
            self.conn.login_service('task.{0}'.format(os.getpid()))
            self.conn.enable_server()
            self.conn.rpc.register_service_instance('taskproxy', self.service)
            task = self.conn.call_sync('task.checkin', key)

            module = imp.load_source('plugin', task['filename'])
            setproctitle.setproctitle('task executor (tid {0})'.format(
                task['id']))

            try:
                self.instance = getattr(module, task['class'])(
                    DispatcherWrapper(self.conn), self.datastore)
                self.instance.configstore = ConfigStore(self.datastore)
                self.running.set()
                result = self.instance.run(*task['args'])
            except BaseException, err:
                print("Task exception: {0}".format(str(err)), file=sys.stderr)
                traceback.print_exc(file=sys.stderr)
                self.put_status('FAILED', exception=err)
            else:
コード例 #2
0
ファイル: main.py プロジェクト: capc/middleware
class Context(object):
    def __init__(self):
        self.service = TaskProxyService(self)
        self.datastore = None
        self.conn = None
        self.instance = None
        self.running = Event()

    def put_status(self, state, result=None, exception=None):
        obj = {"status": state, "result": None}

        if result:
            obj["result"] = result

        if exception:
            obj["error"] = serialize_error(exception)

        self.conn.call_sync("task.put_status", obj)

    def main(self):
        if len(sys.argv) != 2:
            print("Invalid number of arguments", file=sys.stderr)
            sys.exit(errno.EINVAL)

        key = sys.argv[1]
        logging.basicConfig(file=sys.stdout, level=logging.DEBUG)
        try:
            self.datastore = get_default_datastore()
            self.conn = Client()
            self.conn.connect("127.0.0.1")
            self.conn.login_service("task.{0}".format(os.getpid()))
            self.conn.enable_server()
            self.conn.rpc.register_service_instance("taskproxy", self.service)
            task = self.conn.call_sync("task.checkin", key)

            module = imp.load_source("plugin", task["filename"])
            setproctitle.setproctitle("task executor (tid {0})".format(task["id"]))

            try:
                self.instance = getattr(module, task["class"])(DispatcherWrapper(self.conn), self.datastore)
                self.instance.configstore = ConfigStore(self.datastore)
                self.running.set()
                result = self.instance.run(*task["args"])
            except BaseException, err:
                print("Task exception: {0}".format(str(err)), file=sys.stderr)
                traceback.print_exc(file=sys.stderr)
                self.put_status("FAILED", exception=err)
            else: