當前位置: 首頁>>代碼示例>>Python>>正文


Python gevent.spawn_later方法代碼示例

本文整理匯總了Python中gevent.spawn_later方法的典型用法代碼示例。如果您正苦於以下問題:Python gevent.spawn_later方法的具體用法?Python gevent.spawn_later怎麽用?Python gevent.spawn_later使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在gevent的用法示例。


在下文中一共展示了gevent.spawn_later方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: handle_connection_failure

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def handle_connection_failure(self, conn):
        del self._connections[conn]
        conn.close_stream()

        if not self.is_running:
            return

        self.redistribute_ready_state()

        if str(conn) not in self.nsqd_tcp_addresses:
            return

        seconds = self._connection_backoffs[conn].failure().get_interval()
        self.logger.debug('[%s] retrying in %ss', conn, seconds)

        gevent.spawn_later(
            seconds, self.connect_to_nsqd, conn.address, conn.port) 
開發者ID:wtolson,項目名稱:gnsq,代碼行數:19,代碼來源:consumer.py

示例2: _clean_local_backup

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def _clean_local_backup(local_backup_file, g):
    def _safe_remove(path):
        LOG.info('Removing backup {}'.format(local_backup_file))
        try:
            os.remove(path)
        except:
            pass

    if g.value != 0:
        _safe_remove(local_backup_file)
        return

    LOG.info('Removing backup {} in 300s'.format(local_backup_file))
    gevent.spawn_later(300, _safe_remove, local_backup_file)


# XXX this should be moved to a different endpoint 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:19,代碼來源:statusapi.py

示例3: __call__

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def __call__(self, *args, **kwargs):
        now = utc_millisec()
        remaining = self.wait - (now - self._previous)

        if self._cancelled:
            return

        if remaining <= 0 or remaining > self.wait:
            if self._timeout is not None:
                self._timeout.join(timeout=5)
                self._timeout = None
            self._previous = now
            self.f(*args, **kwargs)

        elif self._timeout is None:
            self._args = args
            self._kwargs = kwargs
            self._timeout = gevent.spawn_later(remaining/1000.0, self.later)

        else:
            self._args = args
            self._kwargs = kwargs 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:24,代碼來源:utils.py

示例4: start

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def start(self):
        super(BasePollerFT, self).start()

        if self._actor_glet is not None:
            return

        self._actor_glet = gevent.spawn(
            self._actor_loop
        )
        self._poll_glet = gevent.spawn_later(
            random.randint(0, 2),
            self._poll_loop
        )

        self._age_out_glet = gevent.spawn(
            self._age_out_loop
        ) 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:19,代碼來源:basepoller.py

示例5: set

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def set(self, interval, callback, repeat=False, force=True):
        """
        添加timer
        """
        if self.timer:
            if force:
                # 如果已經存在,那麽先要把現在的清空
                self.clear()
            else:
                # 已經存在的話,就返回了
                return

        def callback_wrapper():
            # 必須要確定,這次調用就是這個timer引起的
            if self.timer == timer:
                # 必須加這句,否則如果在callback中有clear操作,會出現GreenletExit
                self.timer = None
                # 不可以加 timer = None,否則會導致判斷self.timer == timer 報錯找不到timer
                result = safe_call(callback)
                if repeat and not self.timer:
                    # 之所以還要判斷timer,是因為callback中可能設置了新的回調
                    self.set(interval, callback, repeat, True)
                return result

        self.timer = timer = gevent.spawn_later(interval, callback_wrapper) 
開發者ID:dantezhu,項目名稱:haven,代碼行數:27,代碼來源:gevent_impl.py

示例6: handle_incoming_call

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def handle_incoming_call(self, caller_username, backend_server_url):
        if self.videocall_user is None:
            raise JanusCloudError('Register a username first', JANUS_VIDEOCALL_ERROR_REGISTER_FIRST)
        if self.videocall_user.incall:
            raise JanusCloudError('User {} busy'.format(self.videocall_user.username), JANUS_VIDEOCALL_ERROR_ALREADY_IN_CALL)
        self.videocall_user.incall = True
        self.videocall_user.peer_name = caller_username
        self.videocall_user.utime = time.time()
        try:
            self._connect_backend(backend_server_url)
            self._plugin.user_dao.update(self.videocall_user)
        except Exception:
            self._disconnect_backend()
            self.videocall_user.peer_name = ''
            self.videocall_user.incall = False
            raise

        # if incoming_call event cannot be received in INCOMMING_CALL_TIMEOUT(10) seconds,
        # auto disconnect the backend server
        if self._auto_disconnect_greenlet is None:
            self._auto_disconnect_greenlet = gevent.spawn_later(INCOMMING_CALL_TIMEOUT, self._auto_disconnect_routine) 
開發者ID:OpenSight,項目名稱:janus-cloud,代碼行數:23,代碼來源:videocall.py

示例7: _keepalive_routine

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def _keepalive_routine(self):
        gevent.sleep(self._keepalive_interval)
        keepalive_msg = create_janus_msg('keepalive')
        while self.state == BACKEND_SESSION_STATE_ACTIVE:
            try:
                # if there is no handle existed and auto destroy is enabled, just schedule the destroy route
                if not self._handles:
                    if self._auto_destroy and self._auto_destroy_greenlet is None:
                        self._auto_destroy_greenlet = gevent.spawn_later(self._auto_destroy, self._auto_destroy_routine)

                self.send_request(keepalive_msg, ignore_ack=False)

            except Exception as e:
                log.exception('Keepalive failed for backend session {}'.format(self.url))
                self.destroy()
            else:
                gevent.sleep(self._keepalive_interval) 
開發者ID:OpenSight,項目名稱:janus-cloud,代碼行數:19,代碼來源:backend_session.py

示例8: refresh_cache

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def refresh_cache():
    global ROLES
    refresh_rate = settings.BACKGROUND_CACHE_IAM_ROLE_REFRESH_RATE
    if settings.BACKGROUND_CACHE_IAM_ROLE_REFRESH_RATE < 60:
        refresh_rate = 60
    try:
        logger.info('Refreshing IAM roles cache.')
        ROLES = _get_iam_roles()
    except Exception:
        logger.exception(
            'Failed to update IAM roles cache.',
            exc_info=True
        )
    finally:
        # +/- 20ish seconds for respawn, to ensure all processes do not
        # refresh at the same time
        random_refresh_rate = random.randrange(
            refresh_rate - 20,
            refresh_rate + 20
        )
        return gevent.spawn_later(
            random_refresh_rate,
            refresh_cache
        ) 
開發者ID:lyft,項目名稱:confidant,代碼行數:26,代碼來源:iamrolemanager.py

示例9: testPoolJoin

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def testPoolJoin(self):
        with create_actor_pool(address=True, n_process=2, distributor=AdminDistributor(2),
                               backend='gevent') as pool:
            start = time.time()
            pool.join(0.2)
            self.assertGreaterEqual(time.time() - start, 0.2)

            start = time.time()
            gevent.spawn_later(0.2, lambda: pool.stop())
            pool.join()
            self.assertGreaterEqual(time.time() - start, 0.2) 
開發者ID:mars-project,項目名稱:mars,代碼行數:13,代碼來源:test_gevent_pool.py

示例10: handle_connection_failure

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def handle_connection_failure(self, conn):
        conn.close_stream()
        self._clear_responses(conn, NSQException('connection closed'))

        if not self.is_running:
            return

        seconds = self._connection_backoffs[conn].failure().get_interval()
        self.logger.debug('[%s] retrying in %ss', conn, seconds)

        gevent.spawn_later(
            seconds, self.connect_to_nsqd, conn.address, conn.port) 
開發者ID:wtolson,項目名稱:gnsq,代碼行數:14,代碼來源:producer.py

示例11: _start_backoff

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def _start_backoff(self, conn):
        self._connections[conn] = BACKOFF

        interval = self._message_backoffs[conn].get_interval()
        gevent.spawn_later(interval, self._start_throttled, conn)

        self.logger.info('[%s] backing off for %s seconds', conn, interval)
        self.redistribute_ready_state() 
開發者ID:wtolson,項目名稱:gnsq,代碼行數:10,代碼來源:consumer.py

示例12: set_timer

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def set_timer(self, t, f, *args, **kw):
        timer = None

        def wrapper():
            self._timers.discard(timer)
            f(*args, **kw)

        timer = spawn_later(t, wrapper)
        self._timers.add(timer)
        return timer 
開發者ID:OpenMTC,項目名稱:OpenMTC,代碼行數:12,代碼來源:__init__.py

示例13: start

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def start(self):
        super(PanOSLogsAPIFT, self).start()

        if self.glet is not None:
            return

        self.glet = gevent.spawn_later(random.randint(0, 2), self._run)

        for idx in range(len(self.fields)):
            self.age_out_glets.append(
                gevent.spawn(self._age_out_loop, idx)
            ) 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:14,代碼來源:panos.py

示例14: start

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def start(self):
        super(DagPusher, self).start()

        if self.device_list_glet is not None:
            return

        self.device_list_glet = gevent.spawn_later(
            2,
            self._device_list_monitor
        )

        if self.age_out_interval is not None:
            self.ageout_glet = gevent.spawn(self._age_out_run) 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:15,代碼來源:dag_ng.py

示例15: start

# 需要導入模塊: import gevent [as 別名]
# 或者: from gevent import spawn_later [as 別名]
def start(self):
        super(TestMiner, self).start()

        self._glet = gevent.spawn_later(
            2,
            self._run
        ) 
開發者ID:PaloAltoNetworks,項目名稱:minemeld-core,代碼行數:9,代碼來源:test.py


注:本文中的gevent.spawn_later方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。