async def _start_new_async_iter(self, exec_unit: ExecutionUnitInfo,
                                    async_gen_obj, target_id: str,
                                    request: RequestInfo):
        """Attempt to start a new async generator running.
        
        This will check for previous generators for this same variable, and cancel them.
        """
        # Check if a previous iterator exists for this variable.
        if exec_unit.display_id in self._registered_generators:
            old_start, old_task = self._registered_generators[
                exec_unit.display_id]

            new_start = now()
            if new_start > old_start:
                old_task.cancel()
                new_task = self._eventloop.create_task(
                    self._run_async_iter(new_start, exec_unit, async_gen_obj,
                                         target_id, request))
                self._registered_generators[
                    exec_unit.display_id] = new_start, new_task
        else:
            new_start = now()
            new_task = self._eventloop.create_task(
                self._run_async_iter(new_start, exec_unit, async_gen_obj,
                                     target_id, request))
            self._registered_generators[
                exec_unit.display_id] = new_start, new_task
Beispiel #2
0
    def init_metadata(self, parent):
        """Initialize metadata.

        Run at the beginning of execution requests.
        """
        # FIXME: `started` is part of ipyparallel
        # Remove for yapkernel 5.0
        return {
            'started': now(),
        }
Beispiel #3
0
    def init_metadata(self, parent):
        """Initialize metadata.

        Run at the beginning of execution requests.
        """
        # FIXME: `started` is part of ipyparallel
        # Remove for yap_kernel 5.0
        return {
            'started': now(),
        }