Exemplo n.º 1
0
 def _run_actors_greenlet(self, dt, _):
     """
     Helper method for run_actors to TODO: What does this do?
     """
     for actor, greenlet in self._greenlets.iteritems():
         dt, rerun = greenlet.switch(dt)
         while rerun:
             dt, rerun = greenlet.switch(dt)
     return False
Exemplo n.º 2
0
    def _run_actors_greenlet(self, delta, _):
        """
        Helper method for running the actors.

        :param float delta: The amount of time progressed.
        """
        for actor, greenlet in self._greenlets.iteritems():
            delta, rerun = greenlet.switch(delta)
            while rerun:
                delta, rerun = greenlet.switch(delta)
        return False
Exemplo n.º 3
0
    def _run_actors_greenlet(self, delta, _):
        """
        Helper method for running the actors.

        :param float delta: The amount of time progressed.
        """
        for actor, greenlet in self._greenlets.iteritems():
            delta, rerun = greenlet.switch(delta)
            while rerun:
                delta, rerun = greenlet.switch(delta)
        return False
Exemplo n.º 4
0
    def _(*args, **kwargs):
        greenlet = GreenletWorker(callable)
        # switch to the new greenlet
        result = greenlet.switch(*args, **kwargs)
        # back to the parent
        while is_async(result):
            # keep on switching back to the greenlet if we get a Future
            try:
                result = greenlet.switch((yield from result))
            except Exception as exc:
                result = greenlet.throw(exc)

        return greenlet.switch(result)
Exemplo n.º 5
0
    def _(*args, **kwargs):
        greenlet = GreenletWorker(callable)
        # switch to the new greenlet
        result = greenlet.switch(*args, **kwargs)
        # back to the parent
        while is_async(result):
            # keep on switching back to the greenlet if we get a Future
            try:
                result = greenlet.switch((yield from result))
            except Exception as exc:
                result = greenlet.throw(exc)

        return greenlet.switch(result)
Exemplo n.º 6
0
    def _green_task(self, greenlet, task):
        # Run in the main greenlet of the event-loop thread

        while task is not _DONE:
            # switch to the greenlet to start the task
            task = greenlet.switch(task)

            # if an asynchronous result is returned, yield from
            while is_async(task):
                try:
                    task = yield from task
                except Exception as exc:
                    # This call can return an asynchronous component
                    task = greenlet.throw(exc)
Exemplo n.º 7
0
    def _green_task(self, greenlet, task):
        # Run in the main greenlet of the event-loop thread

        while task is not _DONE:
            # switch to the greenlet to start the task
            task = greenlet.switch(task)

            # if an asynchronous result is returned, yield from
            while is_async(task):
                try:
                    task = yield from task
                except Exception as exc:
                    # This call can return an asynchronous component
                    task = greenlet.throw(exc)
Exemplo n.º 8
0
 def switch(self):
     switch_out = getattr(getcurrent(), 'switch_out', None)
     if switch_out is not None:
         switch_out()
     return greenlet.switch(self)
Exemplo n.º 9
0
 def _start(self):
     try:
         greenlet = self.greenlet_class(self.handle)
         greenlet.switch()
     except:
         self.hub.handle_error(None, *sys._exc_info())
Exemplo n.º 10
0
Arquivo: hub.py Projeto: 005/gevent
 def switch(self):
     switch_out = getattr(getcurrent(), 'switch_out', None)
     if switch_out is not None:
         switch_out()
     return greenlet.switch(self)
Exemplo n.º 11
0
Arquivo: hub.py Projeto: 005/gevent
 def _start(self):
     try:
         greenlet = self.greenlet_class(self.handle)
         greenlet.switch()
     except:
         self.hub.handle_error(None, *sys._exc_info())
Exemplo n.º 12
0
 def _green_task(self, task):
     # Run in the main greenlet of the evnet-loop thread
     greenlet = self._available.pop()
     result = greenlet.switch(task)
     while isfuture(result):
         result = greenlet.switch((yield From(result)))
Exemplo n.º 13
0
 def _adjust_greenlet_count(self):
     if len(self._greenlets) < self._max_workers:
         greenlet = GreenletWorker(self._green_run)
         self._greenlets.add(greenlet)
         greenlet.switch()