标签: eventlet

celery eventlet任务有很多套接字错误

当使用--pool = eventlet选项运行我的芹菜工作者时,我从amqplib.client_0_8.method_framing.read_method获得了很多"IOError:Socket closed"异常.我也从eventlet.hubs.hub.switch中看到了很多超时异常.

我正在使用类似于https://gist.github.com/821848的async_manage.py脚本,运行如下的工作:

./async_manage.py celeryd_detach -E --pool=eventlet --concurrency=120 --logfile=<path>
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题,还是我的配置或设置有问题?

我正在运行djcelery 2.2.4,Django 1.3和eventlet 0.9.15.

django celery eventlet django-celery

3
推荐指数
1
解决办法
1456
查看次数

Python中多线程编程的优点是什么?

当我听说多线程编程时,我想到了加速我的程序的机会,但事实并非如此?

import eventlet
from eventlet.green import socket
from iptools import IpRangeList


class Scanner(object):
    def __init__(self, ip_range, port_range, workers_num):
        self.workers_num = workers_num or 1000
        self.ip_range = self._get_ip_range(ip_range)
        self.port_range = self._get_port_range(port_range)
        self.scaned_range = self._get_scaned_range()

    def _get_ip_range(self, ip_range):
        return [ip for ip in IpRangeList(ip_range)]

    def _get_port_range(self, port_range):
        return [r for r in range(*port_range)]

    def _get_scaned_range(self):
        for ip in self.ip_range:
            for port in self.port_range:
                yield (ip, port)

    def scan(self, address):
        try:
            return bool(socket.create_connection(address))
        except:
            return False

    def run(self):
        pool = eventlet.GreenPool(self.workers_num)
        for status in …
Run Code Online (Sandbox Code Playgroud)

python multithreading eventlet

3
推荐指数
1
解决办法
4449
查看次数

`eventlet.spawn`无法按预期工作

我正在为数据分析任务编写Web UI.

这是它应该工作的方式:

在用户指定像dataset和之类的参数后learning rate,我创建了一个新的task record,然后异步启动此任务的执行程序(执行程序可能需要很长时间才能运行.),并且用户被重定向到其他页面.

搜索完之后async library for python,我开始了eventlet,这是我在flask视图函数中写的内容:

db.save(task)
eventlet.spawn(executor, task)
return redirect("/show_tasks")
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,执行程序根本不执行.

我的代码可能有什么问题?或许我应该尝试其他的东西?

python asynchronous green-threads eventlet

3
推荐指数
1
解决办法
3912
查看次数

eventlet.greenthread.sleep在猴子修补环境中的VS time.sleep

我们正在运行一个服务器上的事件绿线程和猴子修补一切.我需要定期检查实现wait循环,我想把睡眠放在里面.

之间有什么区别:

eventlet.greenthread.sleep(1) AND time.sleep(1) 
Run Code Online (Sandbox Code Playgroud)

在猴子修补的环境?我想知道猴子补丁是否处理time.sleep

python monkeypatching green-threads eventlet python-2.7

3
推荐指数
1
解决办法
1036
查看次数

除非waitall(),否则为什么eventlet GreenPool在spawn_n之后不调用func?

此代码不打印任何内容:

def foo(i):
    print i

def main():
    pool = eventlet.GreenPool(size=100)
    for i in xrange(100):
        pool.spawn_n(foo, i)
    while True:
        pass
Run Code Online (Sandbox Code Playgroud)

但是此代码显示数字:

def foo(i):
    print i

def main():
    pool = eventlet.GreenPool(size=100)
    for i in xrange(100):
        pool.spawn_n(foo, i)
    pool.waitall()
    while True:
        pass
Run Code Online (Sandbox Code Playgroud)

唯一的区别是pool.waitall()。在我看来,waitall()意味着要等到池中的所有绿色线程都完成工作后才开始,但是无限循环会等待每个绿色线程,因此pool.waitall()没有必要。

那么为什么会这样呢?

参考:http : //eventlet.net/doc/modules/greenpool.html#eventlet.greenpool.GreenPool.waitall

python green-threads eventlet

3
推荐指数
1
解决办法
869
查看次数

eventlet池有何用处?

我试图了解eventlet.tpool的作用。文档说tpool.execute()允许您使用阻塞函数并在新线程中运行它。但是,tpool.execute()方法本身会阻塞,直到线程完成!那么这可能有用吗?如果我有一些阻塞/长时间运行的函数myfunc()并直接调用它,它将阻塞。如果我在tpool.execute(myfunc)内部调用它,则tpool.execute(myfunc)调用将阻塞。到底有什么区别?

我唯一能猜到的是,当直接调用myfunc()时,它不仅会阻止此协程,而且还会阻止其他协程运行,而调用tpool.execute()会阻止当前协程,但会以某种方式屈服,以便其他协程可以跑。是这样吗 否则,我看不出tpool如何有用。

python multithreading coroutine eventlet

2
推荐指数
1
解决办法
640
查看次数

处理并发请求或使用eventlet线程化Flask SocketIO

我已经开始使用带有Eventlet的Python中的Flask SocketIO进行大量工作,并且正在寻找一种处理并发请求/线程的解决方案.我已经看到gevent可以实现,但是如果我使用eventlet怎么办呢?

python webserver eventlet socket.io flask-socketio

2
推荐指数
1
解决办法
928
查看次数

Eventlet-ImportError:没有名为dnskeybase的模块

我无法在生产系统上导入eventlet。就是说没有名为dnskeybase的模块。

# python scraper.py 
Traceback (most recent call last):
  File "scraper.py", line 7, in <module>
    import eventlet
  File "/usr/lib/python2.7/site-packages/eventlet/__init__.py", line 10, in <module>
    from eventlet import convenience
  File "/usr/lib/python2.7/site-packages/eventlet/convenience.py", line 7, in <module>
    from eventlet.green import socket
  File "/usr/lib/python2.7/site-packages/eventlet/green/socket.py", line 21, in <module>
    from eventlet.support import greendns
  File "/usr/lib/python2.7/site-packages/eventlet/support/greendns.py", line 67, in <module>
    setattr(dns.rdtypes, pkg, import_patched('dns.rdtypes.' + pkg))
  File "/usr/lib/python2.7/site-packages/eventlet/support/greendns.py", line 59, in import_patched
    return patcher.import_patched(module_name, **modules)
  File "/usr/lib/python2.7/site-packages/eventlet/patcher.py", line 120, in import_patched
    *additional_modules + tuple(kw_additional_modules.items()))
  File "/usr/lib/python2.7/site-packages/eventlet/patcher.py", line 94, …
Run Code Online (Sandbox Code Playgroud)

python eventlet

2
推荐指数
1
解决办法
248
查看次数

如何使用 eventlet green 修复 python、urlopen 错误 [Errno 8]

Python新手来了。

我使用 eventlet 和 urllib2 发出大量异步 http 请求。在我的文件顶部有

import eventlet
import urllib
from eventlet.green import urllib2
Run Code Online (Sandbox Code Playgroud)

然后我发出了很多异步 http 请求,并通过这一行成功:

conn = urllib2.urlopen(signed_url, None)
Run Code Online (Sandbox Code Playgroud)

突然间,我收到这个错误:

URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>
Run Code Online (Sandbox Code Playgroud)

这个错误发生在同一个 urllib2.urlopen 行上,这很奇怪,因为它之前成功过很多次。另外,当我打印signed_url 然后将其粘贴到浏览器时,我会得到正确的响应,因此该url 的格式正确。

我已经浏览过帖子,但找不到合适的调试策略。从概念上讲,什么可能导致此错误?您建议我如何修复它?

我正在使用Python 2.7.6。

谢谢。

urllib2 urlopen eventlet python-2.7

1
推荐指数
1
解决办法
6082
查看次数

如何使用 Python 中的 Eventlet 和 Requests 解决“RecursionError:超出最大递归深度”

我正在尝试实现这里提到的 Amazon Web Scraper 。但是,我得到了下面提到的输出。输出会重复,直到以 停止RecursionError: maximum recursion depth exceeded。我已经尝试将 eventlet 降级到版本 0.17.4,如此处所述。此外,requests正如您在 中看到的那样,该模块正在修补helpers.py

助手.py

import os
import random
from datetime import datetime
from urllib.parse import urlparse

import eventlet

requests = eventlet.import_patched('requests.__init__')
time = eventlet.import_patched('time')
import redis

from bs4 import BeautifulSoup
from requests.exceptions import RequestException

import settings

num_requests = 0

redis = redis.StrictRedis(host=settings.redis_host, port=settings.redis_port, db=settings.redis_db)


def make_request(url, return_soup=True):
    # global request building and response handling

    url = format_url(url)

    if "picassoRedirect" …
Run Code Online (Sandbox Code Playgroud)

python proxy amazon-ec2 web-scraping eventlet

1
推荐指数
1
解决办法
3303
查看次数