algo rápido aquí que necesita más experiencia en el campo de pymongo de lo que tengo en este momento:pymongo + gevent: ¿lanzarme una banana y solo monkey_patch?
son las partes "correctas" del conductor pymongo escrito en Python para que llame a GEvent monkey_patch() y alterar con éxito bloqueando el comportamiento de r pymongo/w dentro de gevent "asynchronous" greenlets?
Si esto requerirá un poco más de trabajo sobre gevent y pymongo, pero es factible, estaré más que dispuesto a dedicarle tiempo mientras pueda obtener un poco de guía sobre irc.
Gracias!
Nota: a pequeña escala, las escrituras de mongo no son un gran problema porque solo estamos haciendo una "solicitud" de escritura antes de desbloquear. PERO hablando con fiorix sobre su controlador de mongo asincrónico retorcido (https://github.com/fiorix/mongo-async-python-driver), incluso la escritura rápida (solicitudes) de mongo puede causar problemas en aplicaciones asíncronas a escala. (¡Y por supuesto, las lecturas sin bloqueo podrían causar problemas desde el principio!)
gracias Bernie Hackett en mongodb grupo de google para esta actualización: todavía hay el problema de que mongo tiene un límite superior en su grupo de conexión mucho menor que el número de greenlets que la mayoría de las aplicaciones generará si están usando mongo en el primer lugar (1000 de greenlets). Algunos de los últimos parches de mongodb aquí https://github.com/mgood/mongo-python-driver están en un intento de hacer que gevent juegue muy bien con la agrupación de subprocesos de mongo. Aquí hay otro ejemplo de un parche que * podría * funcionar: http://code.activestate.com/recipes/577490-mongodb-pool-for-gevent-and-pymongo-packages/. – egbutter
¿Tiene, o conoce, algún ejemplo que demuestre que PyMongo se está utilizando con Gevent? –
Y aquí hay otro ejemplo de un parche que podría funcionar: https://gist.github.com/1184264 – kkurian