Articles of Gevent

verifique una lista constantemente y haga algo si la lista tiene elementos

Tengo una lista global donde los elementos se agregan constantemente (desde clientes de la red): mylist = [] def additem(uuid,work): mylist.append(uuid,work) Y una función que debería revisar la lista y si hay elementos proceda a ellos: def proceeditems(): while True: itemdone = [] if len(mylist) > 0: for item in mylist: try: #This can go […]

uWSGI, gevent, algunas llamadas redis y cómo agotar el tiempo de espera de una publicación si supera los 90 ms

A continuación se muestra mi código en botella. Estoy usando uWSGI con el bucle gevent. Desde el momento de la solicitud, debo devolver falso si la solicitud completa toma más de 90 milisegundos. No consigo utilizar gevent para agotar el tiempo después de 90 ms. Los códigos de locking menos de 2 ms. Son las […]

gevent-socketio enviar mensaje desde hilo

Me gustaría usar gevent-socketio para enviar mensajes desde un subproceso de trabajo y actualizar todos los clientes conectados en el estado del trabajo. Intenté esto: from flask import Flask, render_template from flask.ext.socketio import SocketIO, send, emit import threading import time app = Flask(__name__) app.config[‘SECRET_KEY’] = ‘secret!’ socketio = SocketIO(app) @socketio.on(‘message’) def handle_message(message): send(message, broadcast=True) @app.route(‘/’) […]

¿Puede una pequeña parte de una aplicación usar gevent, o tiene que cambiar toda la aplicación?

Tengo una aplicación grande ya escrita que utiliza construcciones de subprocesos estándar de Python, como subprocesos, colas, sockets normales y multiprocesamiento. Tiene un frontend web implementado utilizando matraz. Quiero exponer una cierta parte del estado de las aplicaciones en tiempo real utilizando websockets. Busqué en Flask-Sockets que usa gevent y gunicorn. ¿Toda mi aplicación tiene […]

Python, gevent, urllib2.urlopen.read (), acelerador de descargas

Estoy intentando construir un acelerador de descargas para Linux. Mi progtwig utiliza gevent, os y urllib2. Mi progtwig recibe una URL e intenta descargar el archivo simultáneamente. Todo mi código es válido. Mi único problema es que urllib2.urlopen.read () me impide ejecutar la función .read () al mismo tiempo. Esta es la excepción que se […]

Frasco de planos con gevent trabajando fuera del contexto de la aplicación

Estoy intentando enviar correos electrónicos de forma asíncrona con Frask con gevent a través de correo electrónico. Me estoy poniendo “trabajando fuera del contexto de la aplicación”. Soy consciente de con app.app_context () pero no puedo hacer que funcione con mi configuración. Mi aplicación se crea con una fábrica de aplicaciones como esta: myproject / […]

¿Es posible hacer que grequests y request_cache trabajen juntos?

Mira este código: import requests import grequests import requests_cache requests_cache.install_cache(‘bla’) urls = [ ‘http://www.heroku.com’, ‘http://python-tablib.org’, ‘http://httpbin.org’, ‘http://python-requests.org’, ‘http://kennethreitz.com’ ] rs = (grequests.get(u) for u in urls) results = grequests.map(rs) Espero que después de ejecutar esto encuentre el archivo bla.sqlite en el directorio actual y ejecute results = grequests.map(rs) será MUCHO más rápido porque los datos […]

No se puede construir Python Gevent en Mac OSX 10.10

Sinopsis: pip install gevent no funciona. Excavando, descargué gevent .tar.gz y ejecuté la comstackción manualmente: python setup.py build , obtuvo el mismo error: running build running build_py running build_ext building ‘gevent.core’ extension clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -U__llvm__ -DLIBEV_EMBED=1 -DEV_COMMON= -DEV_CLEANUP_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_PERIODIC_ENABLE=0 -Ibuild/temp.macosx-10.10-x86_64-2.7/libev -Ilibev -I/Users/travisjohnson/.pyenv/versions/2.7.5/include/python2.7 -c gevent/gevent.core.c -o build/temp.macosx-10.10-x86_64-2.7/gevent/gevent.core.o In file included […]

¿Por qué gevent.spawn no ejecuta la función parametrizada hasta que se realiza una llamada a Greenlet.join?

Me gustaría emitir una solicitud HTTP POST asíncrona utilizando gevent . No me importa la respuesta, simplemente quiero ejecutar la solicitud lo antes posible. Sin embargo, siempre que bash hacerlo utilizando gevent.spawn , la solicitud nunca se ejecuta. Lo sé porque llamar a los métodos .ready() o .successful() en el Greenlet que se devuelve desde […]

¿Cuál es la forma más limpia de detener a un trabajador de multiprocesamiento python adjunto a una cola en un bucle infinito?

Estoy implementando un patrón de productor-consumidor en Python usando multiprocessing.Pool y multiprocessing.Queue . Los consumidores son procesos pre-bifurcados que usan gevent para generar múltiples tareas. Aquí hay una versión recortada del código: import gevent from Queue import Empty as QueueEmpty from multiprocessing import Process, Queue, Pool import signal import time # Task queue queue = […]