def _send_tasklet(self, *args):
     try:
         t = self._tasklet
     except AttributeError:
         t = self._tasklet = greenlet.greenlet(self._tasklet_loop)
         t.switch()
     if args:
         return t.switch((1, greenlet.getcurrent(), args))
     else:
         return t.switch((-1, greenlet.getcurrent(), args))
Beispiel #2
0
 def switch(self):
     cur = greenlet.getcurrent()
     assert cur is not self.greenlet, 'Cannot switch to MAINLOOP from MAINLOOP'
     switch_out = getattr(cur, 'switch_out', None)
     if switch_out is not None:
         try:
             switch_out()
         except:
             traceback.print_exception(*sys.exc_info())
     if self.greenlet.dead:
         self.greenlet = greenlet.greenlet(self.run)
     try:
         greenlet.getcurrent().parent = self.greenlet
     except ValueError:
         pass
     return self.greenlet.switch()
Beispiel #3
0
 def switch(self):
     cur = greenlet.getcurrent()
     assert cur is not self.greenlet, 'Cannot switch to MAINLOOP from MAINLOOP'
     switch_out = getattr(cur, 'switch_out', None)
     if switch_out is not None:
         try:
             switch_out()
         except:
             traceback.print_exception(*sys.exc_info())
     if self.greenlet.dead:
         self.greenlet = greenlet.greenlet(self.run)
     try:
         greenlet.getcurrent().parent = self.greenlet
     except ValueError:
         pass
     return self.greenlet.switch()
Beispiel #4
0
    def __init__(self, clock=time.time):
        self.readers = {}
        self.writers = {}
        self.excs = {}

        self.clock = clock
        self.greenlet = greenlet.greenlet(self.run)
        self.stopping = False
        self.running = False
        self.timers = []
        self.next_timers = []
        self.observers = {}
        self.observer_modes = {
            'entry': [],
            'before_timers': [],
            'before_waiting': [],
            'after_waiting': [],
            'exit': [],
        }
Beispiel #5
0
    def __init__(self, clock=time.time):
        self.readers = {}
        self.writers = {}
        self.excs = {}

        self.clock = clock
        self.greenlet = greenlet.greenlet(self.run)
        self.stopping = False
        self.running = False
        self.timers = []
        self.next_timers = []
        self.observers = {}
        self.observer_modes = {
            'entry': [],
            'before_timers': [],
            'before_waiting': [],
            'after_waiting': [],
            'exit': [],
        }