示例#1
0
class TaskflowDistributedTaskServices(base.DistributedTaskServices):

    def __init__(self):
        super(TaskflowDistributedTaskServices, self).__init__()

        self.driver = TaskFlowDistributedTaskDriver(conf)
        self.jobboard_backend_conf_worker = \
            self.driver.jobboard_backend_conf_worker

    @property
    def persistence(self):
        return self.driver.persistence()

    def submit_task(self, flow_factory, **kwargs):
        """submit a task.

        """
        with self.persistence as persistence:

            with self.driver.job_board(
                    self.jobboard_backend_conf_worker.copy(),
                    persistence=persistence) as board:

                job_id = uuidutils.generate_uuid()
                job_name = '-'.join([flow_factory.__name__, job_id])
                job_logbook = logbook.LogBook(job_name)
                flow_detail = logbook.FlowDetail(job_name,
                                                 uuidutils.generate_uuid())
                factory_args = ()
                factory_kwargs = {}
                engines.save_factory_details(flow_detail, flow_factory,
                                             factory_args, factory_kwargs)
                job_logbook.add(flow_detail)
                persistence.get_connection().save_logbook(job_logbook)
                job_details = {
                    'store': kwargs
                }
                job = board.post(job_name,
                                 book=job_logbook,
                                 details=job_details)
                LOG.info("Posted: {0}".format(job))


    def run_task_worker(self):
        """Run a task flow worker (conductor).

        """
        with self.persistence as persistence:

            with self.driver.job_board(
                    self.jobboard_backend_conf_worker.copy(),
                    persistence=persistence) as board:

                conductor = single_threaded.SingleThreadedConductor(
                    "Canary worker conductor", board, persistence,
                    engine='serial')

                conductor.run()
示例#2
0
    def __init__(self):
        super(TaskflowDistributedTaskServices, self).__init__()

        self.driver = TaskFlowDistributedTaskDriver(conf)
        self.jobboard_backend_conf_worker = \
            self.driver.jobboard_backend_conf_worker