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


Python queue.Empty方法代碼示例

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


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

示例1: close

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def close(self):
        """Immediately close all connections and stop workers."""
        if not self.is_running:
            return

        self._state = CLOSED
        self.logger.debug('closing connection(s)')

        while True:
            try:
                conn = self._connections.get(block=False)
            except Empty:
                break

            conn.close_stream()

        self.on_close.send(self) 
開發者ID:wtolson,項目名稱:gnsq,代碼行數:19,代碼來源:producer.py

示例2: manage

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def manage(self):
        """"
        Manage will hand out work when the appropriate Worker is free.
        The manager timeout must be less than worker timeout, or else, the
        workers will be idled and shutdown.
        """
        try:
            while True:
                for name, workgroup in self.workgroups.items():
                    for qname, q in self.qitems.items():
                        if name == qname: # workgroup name must match tracker name
                            # a tracker with the same name as workgroup name, is...
                            # ...effectively, the workgroup's task queue, so now...
                            # assign a task to a worker from the workgroup's task queue
                            for worker in workgroup:
                                one_task = q.get(timeout=self.mgr_qtimeout)
                                worker.tasks.put(one_task)
                gevent.sleep(0)
        except Empty:
            self.mgr_no_work = True
            if self.mgr_should_stop:
                logger.info(f"Assigned all {name} work. I've been told I should stop.")
                self.should_stop = True
            else:
                logger.info(f"Assigned all {name} work. Awaiting more tasks to assign.") 
開發者ID:bomquote,項目名稱:transistor,代碼行數:27,代碼來源:base_manager.py

示例3: _concurrent_execute

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def _concurrent_execute(self, context, start_req, parser, pool, pool_size):
        queue = Queue()  # 任務隊列

        # 將初始化請求加入任務隊列
        for r in start_req:
            queue.put_nowait(r)

        if pool is None:
            pool = GeventPool(pool_size)

        greenlets = []

        while True:
            try:
                req = self._check_req(queue.get(timeout=1))
                if req.parser is None:
                    req.parser = parser
                greenlets.append(pool.spawn(req, context, queue))
            except Empty:
                break

        return [greenlet.get() for greenlet in greenlets] 
開發者ID:chihongze,項目名稱:girlfriend,代碼行數:24,代碼來源:crawl.py

示例4: test_anonymous_no_concurrent_limit_because_remain_count

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def test_anonymous_no_concurrent_limit_because_remain_count(
        client, client_ip, mocker, url):
    mocker.patch.object(settings, 'CONCURRENT_LIMITER_SETTINGS', {
        '__anonymous__': {
            'ttl': 100,
            'capacity': 100,
        }
    })

    def worker(queue):
        response = client.get(url)
        if response.status_code == 429:
            queue.put(429)

    greenlets = []
    queue = Queue()
    for _ in range(3):
        greenlets.append(gevent.spawn(worker, queue))

    gevent.joinall(greenlets)
    with raises(Empty):
        queue.get_nowait() 
開發者ID:huskar-org,項目名稱:huskar,代碼行數:24,代碼來源:test_http_concurrent_limit.py

示例5: test_anonymous_no_rate_limit_because_remain_count

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def test_anonymous_no_rate_limit_because_remain_count(
        client, client_ip, mocker, url):
    mocker.patch.object(settings, 'RATE_LIMITER_SETTINGS', {
        '__anonymous__': {
            'rate': 100,
            'capacity': 300,
        }
    })

    def worker(queue):
        response = client.get(url)
        if response.status_code == 429:
            queue.put(429)

    greenlets = []
    queue = Queue()
    for _ in range(3):
        greenlets.append(gevent.spawn(worker, queue))

    gevent.joinall(greenlets)
    with raises(Empty):
        queue.get_nowait() 
開發者ID:huskar-org,項目名稱:huskar,代碼行數:24,代碼來源:test_http_rate_limit.py

示例6: test_logged_no_rate_limit_because_remain_count

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def test_logged_no_rate_limit_because_remain_count(
        client, client_ip, test_user, test_token, mocker):
    mocker.patch.object(settings, 'RATE_LIMITER_SETTINGS', {
        test_user.username: {
            'rate': 100,
            'capacity': 300,
        }
    })

    def worker(queue):
        response = client.get(
            '/api/need_login', headers={
                'Authorization': test_token,
            })
        if response.status_code == 429:
            queue.put(429)

    greenlets = []
    queue = Queue()
    for _ in range(3):
        greenlets.append(gevent.spawn(worker, queue))

    gevent.joinall(greenlets)
    with raises(Empty):
        queue.get_nowait() 
開發者ID:huskar-org,項目名稱:huskar,代碼行數:27,代碼來源:test_http_rate_limit.py

示例7: update_users

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def update_users(self):
        already_updated = set()

        while True:
            # Only update so many at a time
            if len(already_updated) > 10000:
                return

            try:
                user_id, data = self.user_updates.get_nowait()
            except Empty:
                return

            if user_id in already_updated:
                continue

            already_updated.add(user_id)

            try:
                User.update(**data).where(User.user_id == user_id).execute()
            except:
                self.log.exception('Failed to update user %s: ', user_id) 
開發者ID:b1naryth1ef,項目名稱:rowboat,代碼行數:24,代碼來源:sql.py

示例8: _wait_for_ssh

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def _wait_for_ssh(queue, ssh, command, timeout=1, attempts=40):
    """Wait until a successful connection to the ssh endpoint can be made."""
    try:
        host, port = queue.get(timeout=timeout * attempts)
    except g_queue.Empty:
        cli.bad_exit('No SSH endpoint found.')

    for _ in six.moves.range(attempts):
        _LOGGER.debug('Checking SSH endpoint %s:%s', host, port)
        if _connect(host, port):
            run_ssh(host, port, ssh, list(command))
            break  # if run_ssh doesn't end with os.execvp()...

        try:
            host, port = queue.get(timeout=timeout)
            queue.task_done()
        except g_queue.Empty:
            pass

    # Either all the connection attempts failed or we're after run_ssh
    # (not resulting in os.execvp) so let's "clear the queue" so the thread
    # can join
    queue.task_done() 
開發者ID:Morgan-Stanley,項目名稱:treadmill,代碼行數:25,代碼來源:ssh.py

示例9: _get_connection

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def _get_connection(self, block=True, timeout=None):
        if not self.is_running:
            raise NSQException('producer not running')

        while True:
            try:
                conn = self._connections.get(block=block, timeout=timeout)
            except Empty:
                raise NSQNoConnections

            if conn.is_connected:
                return conn

            # Discard closed connections 
開發者ID:wtolson,項目名稱:gnsq,代碼行數:16,代碼來源:producer.py

示例10: spawn_spider

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def spawn_spider(self, **kwargs):
        """
        Start and execute.
        """
        try:
            while True:
                task = self.tasks.get(timeout=self.qtimeout)  # decrements queue by 1
                logger.info(f'Worker {self.name}-{self.number} got task {task}')
                spider = self.get_spider(task, **kwargs)
                spider.start_http_session(**self.http_session)
                # OK, right here is where we wait for the spider to return a result.
                self.result(spider, task)
        except Empty:
            logger.info(f'Quitting time for worker {self.name}-{self.number}!') 
開發者ID:bomquote,項目名稱:transistor,代碼行數:16,代碼來源:baseworker.py

示例11: await_data

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def await_data(connection, config):
    messages = []
    # block for first message - wake up after a while
    try:
        messages.extend(connection.queue.get(timeout=config["wake_connections_after"]))
    except Empty:
        pass
    # get more messages if enqueued takes up total 0.25
    while True:
        try:
            messages.extend(connection.queue.get(timeout=0.25))
        except Empty:
            break
    return messages 
開發者ID:Channelstream,項目名稱:channelstream,代碼行數:16,代碼來源:server.py

示例12: save_search_result_with_queue

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def save_search_result_with_queue(queue):
    while 1:
        try:
            p = queue.get(timeout=0)
        except Empty:
            break

        save_search_result(p, queue)
    print 'stopping crawler...' 
開發者ID:dongweiming,項目名稱:web_develop,代碼行數:11,代碼來源:search_result.py

示例13: save_search_result_with_queue

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def save_search_result_with_queue(queue):
    while 1:
        try:
            p = queue.get(timeout=0)
        except Empty:
            break

        print p, 'page'
        save_search_result(p, queue)
    print 'stopping crawler...' 
開發者ID:dongweiming,項目名稱:web_develop,代碼行數:12,代碼來源:search_result_with_lock.py

示例14: _spawn_worker

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def _spawn_worker(self):
        def worker():
            while self._running:
                try:
                    func = self.hook_queue.get(timeout=1)
                    self._empty.clear()
                    try:
                        func()
                    except Exception:
                        logger.exception('Webhook task unexpected failed.')
                        capture_exception(data=None)
                except Empty:
                    self._empty.set()
                    continue
        return spawn(worker) 
開發者ID:huskar-org,項目名稱:huskar,代碼行數:17,代碼來源:notify.py

示例15: test_session_with_max_lifetime

# 需要導入模塊: from gevent import queue [as 別名]
# 或者: from gevent.queue import Empty [as 別名]
def test_session_with_max_lifetime(
        zk, test_application_name, long_poll, mocker):
    mocker.patch.object(settings, 'LONG_POLLING_LIFE_SPAN_JITTER', 10)
    queue = long_poll(life_span=1)
    queue.get(timeout=5)
    gevent.sleep(1.1)

    zk.create(
        '/huskar/config/%s/alpha/DB_URL' % test_application_name, 'mysql://',
        makepath=True)

    with raises(Empty):
        queue.get(timeout=1.1) 
開發者ID:huskar-org,項目名稱:huskar,代碼行數:15,代碼來源:test_long_polling.py


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