标签: eventlet

什么是用Python编写的现代Comet服务器?

我在python中构建了我的应用程序(使用来自eventlent的greenthreads)我应该使用Orbited作为彗星服务器将请求从用户端javascript代码传递给我的应用程序.

可悲的是,我发现Orbited死了,网站停机了几个星期,它缺乏python 2.7支持.

你能推荐一些好的替代品吗?

python comet twisted eventlet

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

将 Flask 与 Faust 集成

我试图让浮士德代理在烧瓶视图/端点内投射消息,我找不到任何例子,我真的很挣扎。

有没有人成功尝试过这个?文档说使用 gevent 或 eventlet 作为 asyncio 的桥梁,但不幸的是无法理解

gevent flask eventlet python-3.6 faust

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

如何真正实现python中的超时?

如何在python中真正实现超时?http://eventlet.net/doc/modules/timeout.html

代码如下:

#!/usr/bin/python
import eventlet
import time
import sys
import random

while True:
        try:
         with eventlet.timeout.Timeout(1, False):
                print 'limited by timeout execution'
                while True:
                        print '\r' + str(random.random()),
                        sys.stdout.flush()
                        eventlet.sleep(0)
                print ' Never printed Secret! '
        except Exception as e:
                print ' Exception: ', e
        finally:
                print ''
                print ' Timeout reached '
                print ''
Run Code Online (Sandbox Code Playgroud)

永远不会超时.我哪里错了?

我替换了Ps:

 time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

有:

 eventlet.sleep(0)
Run Code Online (Sandbox Code Playgroud)

为异常添加False,现在效果很好:

with eventlet.timeout.Timeout(1):
Run Code Online (Sandbox Code Playgroud)

改成:

with eventlet.timeout.Timeout(1, False):
Run Code Online (Sandbox Code Playgroud)

但它只适用于eventlet.sleep(0.1)

例如,此代码错误:

#!/usr/bin/python
import eventlet
import time
start_time = time.time()
data = …
Run Code Online (Sandbox Code Playgroud)

python eventlet

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

Celery + Eventlet池并不能提高异步Web请求的执行速度

正如celery 文档 中提到的,对于事件 I/O(例如异步 HTTP 请求),eventlet 池应该比 prefork 池更快。

他们甚至提到

“在使用 feed hub 系统进行的非正式测试中,Eventlet 池每秒可以获取并处理数百个 feed,而 prefork 池则花费 14 秒处理 100 个 feed。”

然而,我们无法产生任何与此类似的结果。完全按照描述运行示例任务urlopencrawl并打开数千个url,看来 prefork 池几乎总是表现得更好。

我们测试了各种并发性(并发性为 200 的 prefork,并发性为 200、2000、5000 的 eventlet)。在所有这些情况下,使用 prefork 池,任务都可以在更少的秒内完成。运行的计算机是 2014 年 Macbook Pro,运行 RabbitMQ 服务器。

我们希望同时发出数千个异步 HTTP 请求,并且想知道 eventlet 池是否值得实现?如果是的话,我们还缺少什么?

python -V && pip freeze 的结果是:

Python 2.7.6
amqp==1.4.6
anyjson==0.3.3
billiard==3.3.0.20
bitarray==0.8.1
celery==3.1.18
dnspython==1.12.0
eventlet==0.17.3
greenlet==0.4.5
kombu==3.0.26
pybloom==1.1
pytz==2015.2
requests==2.6.2
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)

使用的测试代码(几乎完全来自文档):

>>> from tasks import …
Run Code Online (Sandbox Code Playgroud)

python concurrency celery eventlet

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

raise RuntimeError('您需要使用 eventlet 服务器。'

在我的项目中,我创建了一个app

代码website_chat/views.py

async_mode = 'eventlet'

import os

from django.http import HttpResponse
import socketio

basedir = os.path.dirname(os.path.realpath(__file__))
sio = socketio.Server(async_mode=async_mode)
thread = None
Run Code Online (Sandbox Code Playgroud)

website_chat/management/commands/runserver.py

from django.core.management.commands.runserver import Command as RunCommand

from xxx/website_chat.views import sio


class Command(RunCommand):
    help = 'Run the Socket.IO server'

    def handle(self, *args, **options):
        if sio.async_mode == 'threading':
            super(Command, self).handle(*args, **options)
        elif sio.async_mode == 'eventlet':
            # deploy with eventlet
            import eventlet
            import eventlet.wsgi
            from Qyun.wsgi import application
            eventlet.wsgi.server(eventlet.listen(('', 8002)), application)
        elif sio.async_mode == …
Run Code Online (Sandbox Code Playgroud)

python django wsgi eventlet

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

在SQLAlchemy中使用eventlet

我正在使用eventlet这个例子开始构建一个简单的网站爬虫.我想使用SQLAlchemy来存储网页的内容和元数据,以便进一步处理.可以将SQLAlchemy与eventlet一起使用吗?有人能提供一个简单的例子吗?

python sqlalchemy eventlet

3
推荐指数
2
解决办法
2236
查看次数

在单个python进程中混合绿色线程和本机线程是否安全?

首先,将绿色线程(如eventlet或gevent)与标准库中的python本机线程(即同一个python进程中的Lib/threading.py)混合是否安全?

其次,如果它是安全的,这是一个坏主意吗?

python multithreading green-threads gevent eventlet

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

ImportError:没有名为eventlet的模块

我使用:在python中安装了eventlet库pip install eventlet.但是当我尝试导入eventlet时发生了这个错误:

$python 
Python 2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import eventlet
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named eventlet
Run Code Online (Sandbox Code Playgroud)

我试图再次安装它,但我得到了这个:

$pip install eventlet
Requirement already satisfied (use --upgrade to upgrade): eventlet in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/eventlet-0.18.1-py3.5.egg
Requirement already satisfied (use --upgrade to upgrade): greenlet>=0.3 in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/greenlet-0.4.9-py3.5-macosx-10.6-intel.egg (from eventlet)
Run Code Online (Sandbox Code Playgroud)

如何纠正这个错误?

PS:我使用的是Python 2.7

importerror eventlet python-2.7

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

如何在docker容器中设置flask-socketio?

您好,我正在尝试在 docker 容器中设置flask-socketio。它似乎可以运行,但是当我尝试访问端口 5000 上的 localhost 时出现错误(来自浏览器),就像我习惯使用 Flask 应用程序一样。它说:无法连接!

我将向您展示 5 个重要文件:Dockerfile、requirements.txt、docker-compose.yml、web_app.py 和 index.html

Dockerfile:

FROM python:3.6.5

WORKDIR /code
COPY * /code/
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

要求.txt:

Flask==1.0.2
Flask-SocketIO==3.0.1
eventlet==0.24.1
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: "3"
services:
  web:
    build: ./web
    ports:
      - '5000:5000'
    volumes:
      - './web:/code'
Run Code Online (Sandbox Code Playgroud)

我使用命令 docker-compose up --builddocker-compose run web /bin/bash以交互模式进入这个容器。

web_app.py:

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('my …
Run Code Online (Sandbox Code Playgroud)

python flask eventlet docker flask-socketio

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

如何使用ssl启动flask_socketio应用程序?

我应该如何使用 SSL 将 app.run() 转换为 sockio.run() ?

我有下面的应用程序启动代码与 Flask 开发服务器一起运行

if __name__=='__main__':
    app.run(ssl_context=(ssl_cert, ssl_key))
Run Code Online (Sandbox Code Playgroud)

我现在尝试使用 socketio 启动它,如下所示

if __name__=='__main__':
    socketio.run(app, host='0.0.0.0', port=80, debug=True)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何将证书传递到此调用中。
我需要做什么才能使这项工作成功?

python flask eventlet socket.io flask-socketio

3
推荐指数
2
解决办法
6645
查看次数