Articles of Gevent

¿Cómo mejorar el rendimiento de la combinación de gevent y tornado?

Estoy tratando de usar gevent como servidor wsgi, y uso la aplicación WSGIA de tornado para procesar las solicitudes. Aquí está el código #!/usr/bin/env python # coding=utf-8 import gevent from gevent import monkey monkey.patch_all(thread=False) from gevent.pywsgi import WSGIServer from tornado.wsgi import WSGIApplication import tornado.web import tornado.wsgi import requests class MainHandler(tornado.web.RequestHandler): def get(self): requests.get(‘http://google.com’) self.write(‘hello’) handlers […]

psycopg2 + pgbouncer. Modo asíncrono con error gevent

Tengo una aplicación psycopg2 + pgbouncer + gevent. Aplicación asíncrona, es decir, un proceso atiende múltiples solicitudes. El acceso asíncrono a la base de datos apareció en la última versión de psycopg2, si no 2.2. Pero solo en esta versión se presenta un error para el que hay muchas desconexiones de pgbouncer. En los registros […]

gevent.StreamServer y sin locking raw_input ()?

He escrito un servidor TCP simple usando gevent.StreamServer para propósitos de prueba. Para poder enviar respuestas a algunos de los clientes, necesito una forma no bloqueante para manejar la entrada a través de raw_input() , preferiblemente sin utilizar subprocesos. Después de buscar en Google, me topé con esta pregunta: ¿Cómo hacer que raw_input no se […]

Usando gevent con python xmlrpclib

¿Es posible usar libs estándar de python xmlrpclib con gevent? Actualmente estoy intentando usar monkey.patch_all (), pero sin éxito. from gevent import monkey monkey.patch_all() import gevent import time import xmlrpclib from SimpleXMLRPCServer import SimpleXMLRPCServer import urllib2 def fetch(url): g = gevent.spawn(urllib2.urlopen, url) return g.get().read() def is_even(n): return n%2 == 0 def req(url): return fetch(url) server […]

Python: el módulo de solicitudes lanza una excepción con Gevent

El siguiente código: import gevent import gevent.monkey gevent.monkey.patch_socket() import requests import json base_url = ‘https://api.getclever.com’ section_url = base_url + ‘/v1.1/sections’ #get all sections sections = requests.get(section_url, auth=(‘DEMO_KEY’, ”)).json() urls = [base_url+data[‘uri’]+’/students’ for data in sections[‘data’]] #get students for each section threads = [gevent.spawn(requests.get, url, auth=(‘DEMO_KEY’, ”)) for url in urls] gevent.joinall(threads) students = [thread.value for […]

gevent y posgres: falla la conexión asíncrona

Estoy usando gevent para manejar API I / O en un sistema web basado en Django. He parchado de monos usando: import gevent.monkey; gevent.monkey.patch_socket() He parcheado psychopg utilizando: import psycogreen; psycogreen.gevent.patch_psycopg() No obstante, ciertas llamadas a Django por lo que Model.save () está fallando con el error: “Falló la conexión asíncrona”. ¿Necesito hacer algo más […]

¿Cómo detecto una desconexión de socket? / ¿Cómo llamo a socket.recv con un timeout?

Estoy utilizando gevent parcheado socket para conectarme a un servidor de transmisión y estoy usando una conexión ADSL. No controlo el servidor, pero en mis pruebas, si detengo el servidor, puedo detectar la desconexión simplemente verificando si el resultado de recv es una cadena vacía, pero si desactivo mi versión de módem adsl nunca sale. […]

La solicitud del matraz / gevent simple no se está ejecutando simultáneamente

Tengo este simple matraz / gevent demo código. #!/usr/bin/env python import gevent from gevent.pywsgi import WSGIServer from gevent import monkey monkey.patch_socket() from flask import Flask, Response app = Flask(__name__) @app.route(‘/’) def stream(): def gen(): for i in range(10): yield “data: %d\r\n” % i gevent.sleep(1) return Response(gen()) if __name__ == ‘__main__’: http = WSGIServer((”, 5000), app) […]

gevent no se instala en un entorno virtual de Python en OS X Capitan

Acabo de instalar OS X Capitan y traté de instalar gevent en un entorno virtual python2.7.x. Y esto es lo que obtengo. Parece algo relacionado con gcc. Aquí está el rastreo: Building wheels for collected packages: gevent Running setup.py bdist_wheel for gevent Complete output from command /Users/admin/pyenvs/plgrnd/bin/python -c “import setuptools;__file__=’/private/var/folders/m8/xt5420594cn8zbgnry594ljw0000gn/T/pip-build-KkzbuJ/gevent/setup.py’;exec(compile(open(__file__).read().replace(‘\r\n’, ‘\n’), __file__, ‘exec’))” bdist_wheel -d […]

Ejecución de solicitudes de flask + gevent + que no se sirven ‘simultáneamente’

Arranco mi aplicación de matraz de esta manera: #!flask/bin/python from app import app_instance from gevent.pywsgi import WSGIServer #returns and instance of the application – using function to wrap configuration app = app_instance() http_server = WSGIServer((”,5000), app) http_server.serve_forever() Y luego, cuando bash ejecutar este código, las solicitudes se bloquean hasta que se agote la solicitud original. […]