예제 #1
0
파일: runner.py 프로젝트: xethorn/flowy
 def handle_schedule(self, result):
     for a in result.get('activities', []):
         self.state.set_running(a['id'])
         self.trace_activity(a)
     for w in result.get('workflows', []):
         self.state.set_running(w['id'])
         self.trace_workflow(w)
     self.trace_flush()
     for a in result.get('activities', []):
         try:
             args, kwargs = serialization.loads(a['input_data'])
             f = self.activity_executor.submit(a['f'], *args, **kwargs)
             f.add_done_callback(
                 partial(self.complete_activity_and_reschedule_decision,
                         a['id']))
         except RuntimeError:
             pass  # The executor must be closed
     for w in result.get('workflows', []):
         r = ChildWorkflowRunner(w['f'],
                                 self.workflow_executor,
                                 self.activity_executor,
                                 w['input_data'],
                                 parent=self,
                                 wid=w['id'])
         r.reschedule_decision()
     self.reschedule_if_history_updated()
예제 #2
0
 def deserialize_input(input_data):
     """Deserialize the input data in args, kwargs."""
     args, kwargs = loads(input_data)  # raise TypeError if deconstructing fails
     if not isinstance(args, list):
         raise ValueError('Invalid args: %r' % (args,))
     if not isinstance(kwargs, dict):
         raise ValueError('Invalid kwargs: %r' % (kwargs,))
     return args, kwargs
예제 #3
0
파일: runner.py 프로젝트: bogdanpop/flowy
 def handle_schedule(self, result):
     for a in result.get('activities', []):
         self.state.set_running(a['id'])
         self.trace_activity(a)
     for w in result.get('workflows', []):
         self.state.set_running(w['id'])
         self.trace_workflow(w)
     self.trace_flush()
     for a in result.get('activities', []):
         try:
             args, kwargs = serialization.loads(a['input_data'])
             f = self.activity_executor.submit(a['f'], *args, **kwargs)
             f.add_done_callback(partial(
                 self.complete_activity_and_reschedule_decision, a['id']))
         except RuntimeError:
             pass  # The executor must be closed
     for w in result.get('workflows', []):
         r = ChildWorkflowRunner(w['f'], self.workflow_executor,
                                 self.activity_executor, w['input_data'],
                                 parent=self,
                                 wid=w['id'])
         r.reschedule_decision()
     self.reschedule_if_history_updated()
예제 #4
0
파일: proxy.py 프로젝트: bogdanpop/flowy
 def deserialize_result(result):
     return loads(result)
예제 #5
0
def test_dumps_loads(value, result):
    from flowy.serialization import dumps, loads
    assert loads(dumps(value)) == result
예제 #6
0
파일: proxy.py 프로젝트: xethorn/flowy
 def deserialize_result(result):
     return loads(result)
예제 #7
0
파일: runner.py 프로젝트: bogdanpop/flowy
 def handle_finish(self, result):
     self.stop_running(serialization.loads(result['result']))
예제 #8
0
파일: runner.py 프로젝트: bogdanpop/flowy
 def complete_subwf_and_reschedule_decision(self, task_id, result):
     with self.lock:
         self.state.set_result(task_id, result)
         self.trace_result(task_id, serialization.loads(result))
         self.update_history_or_reschedule()
예제 #9
0
def test_dumps_loads(value, result):
    from flowy.serialization import dumps, loads
    assert loads(dumps(value)) == result
예제 #10
0
파일: runner.py 프로젝트: xethorn/flowy
 def handle_finish(self, result):
     self.stop_running(serialization.loads(result['result']))
예제 #11
0
파일: runner.py 프로젝트: xethorn/flowy
 def complete_subwf_and_reschedule_decision(self, task_id, result):
     with self.lock:
         self.state.set_result(task_id, result)
         self.trace_result(task_id, serialization.loads(result))
         self.update_history_or_reschedule()