Пример #1
0
def _spawn_n(seconds, func, args, kwargs):
    hub = hubs.get_hub()
    if kwargs:
        g = greenlet.greenlet(_main_wrapper, parent=hub.greenlet)
        t = hub.schedule_call_global(seconds, g.switch, func, args, kwargs)
    else:
        g = greenlet.greenlet(func, parent=hub.greenlet)
        t = hub.schedule_call_global(seconds, g.switch, *args)
    return t, g
Пример #2
0
 def __init__(self):
     assert Hub.state == 0, ('%s hub can only be instantiated once' %
                             type(self).__name__, Hub.state)
     Hub.state = 1
     make_twisted_threadpool_daemonic()  # otherwise the program
     # would hang after the main
     # greenlet exited
     g = greenlet.greenlet(self.run)
     BaseTwistedHub.__init__(self, g)
Пример #3
0
def call_after_local(seconds, function, *args, **kwargs):
    warnings.warn(
        "call_after_local is renamed to spawn_after_local, which"
        "has the same signature and semantics (plus a bit extra).",
        DeprecationWarning, stacklevel=2)
    hub = hubs.get_hub()
    g = greenlet.greenlet(function, parent=hub.greenlet)
    t = hub.schedule_call_local(seconds, g.switch, *args, **kwargs)
    return t
Пример #4
0
 def ensure_greenlet(self):
     if self.greenlet.dead:
         # create new greenlet sharing same parent as original
         new = greenlet.greenlet(self.run, self.greenlet.parent)
         # need to assign as parent of old greenlet
         # for those greenlets that are currently
         # children of the dead hub and may subsequently
         # exit without further switching to hub.
         self.greenlet.parent = new
         self.greenlet = new
Пример #5
0
 def switch(self):
     assert greenlet.getcurrent() is not self.greenlet, \
         "Cannot switch from MAINLOOP to MAINLOOP"
     if self.greenlet.dead:
         self.greenlet = greenlet.greenlet(self.run)
     try:
         greenlet.getcurrent().parent = self.greenlet
     except ValueError:
         pass
     return self.greenlet.switch()
Пример #6
0
    def __init__(self, clock=time.time):
        self.listeners = {READ: {}, WRITE: {}}
        self.secondaries = {READ: {}, WRITE: {}}

        self.clock = clock
        self.greenlet = greenlet.greenlet(self.run)
        self.stopping = False
        self.running = False
        self.timers = []
        self.next_timers = []
        self.lclass = FdListener
        self.debug_exceptions = True
Пример #7
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:
             self.squelch_generic_exception(sys.exc_info())
     if self.greenlet.dead:
         self.greenlet = greenlet.greenlet(self.run)
     try:
         if self.greenlet.parent is not cur:
             cur.parent = self.greenlet
     except ValueError:
         pass  # gets raised if there is a greenlet parent cycle
     clear_sys_exc_info()
     return self.greenlet.switch()
Пример #8
0
    def __init__(self, clock=None):
        self.listeners = {READ: {}, WRITE: {}}
        self.secondaries = {READ: {}, WRITE: {}}
        self.closed = []

        if clock is None:
            clock = monotonic.monotonic
        self.clock = clock

        self.greenlet = greenlet.greenlet(self.run)
        self.stopping = False
        self.running = False
        self.timers = []
        self.next_timers = []
        self.lclass = FdListener
        self.timers_canceled = 0
        self.debug_exceptions = True
        self.debug_blocking = False
        self.debug_blocking_resolution = 1
Пример #9
0
    def __init__(self, clock=None):
        self.listeners = ({}, {})
        self.secondaries = ({}, {})
        self.closed = []
        self.lclass = FdListener

        self.clock = default_clock if clock is None else clock

        self.timers = []
        self.next_timers = []
        self.listeners_events = deque()
        self.event_notifier = orig_threading.Event()

        self.greenlet = greenlet.greenlet(self.run)
        self.stopping = False
        self.running = False

        self.debug_exceptions = False
        self.debug_blocking = False
        self.debug_blocking_resolution = 1
        self._old_signal_handler = None

        self.poll = select.epoll()
Пример #10
0
def _spawn_n(seconds, func, args, kwargs):
    hub = hubs.get_hub()
    g = greenlet.greenlet(func, parent=hub.greenlet)
    t = hub.schedule_call_global(seconds, g.switch, *args, **kwargs)
    return t, g
Пример #11
0
def _spawn_n(seconds, func, args, kwargs):
    g = greenlet(func, parent=active_hub.inst.greenlet)
    return active_hub.inst.schedule_call_global(seconds, g.switch, *args,
                                                **kwargs), g