def submit(self, fn, args=None, kwargs=None): ft = WMFuture() log.debug('dispatching {!r}'.format(fn)) self.pending[ft.task_id] = ft self.task_queue.put(('task', ft.task_id, fn, args or (), kwargs or {})) return ft
def _make_append_task(self, fn, args, kwargs): ft = WMFuture() task_id = ft.task_id task = Task(task_id, fn, args, kwargs) self.pending_futures[task_id] = ft self.task_queue.append(task) return ft
def submit(self, fn, args=None, kwargs=None): if self.futures is None: # We are shutting down raise ZMQWMEnvironmentError('work manager is shutting down') future = WMFuture() task = Task(fn, args or (), kwargs or {}, task_id = future.task_id) self.futures[task.task_id] = future self.outgoing_tasks.append(task) # Wake up the communications loop (if necessary) to announce new tasks self.send_inproc_message(Message.TASKS_AVAILABLE) return future
def submit(self, fn, args=None, kwargs=None): ft = WMFuture() try: result = fn(*(args if args is not None else ()), **(kwargs if kwargs is not None else {})) except Exception as e: ft._set_exception(e, sys.exc_info()[2]) else: ft._set_result(result) return ft