psycopg2cffi (actualizado en 2015)
psycopg2cffi es otro reemplazo compatible con psycopg2 y debería proporcionar el mejor rendimiento de PostgreSQL con PyPy. Agregue esto a su settings.py
para seguir siendo compatible con ambos:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2cffi
from psycopg2cffi import compat
compat.register()
psycopg2-ctypes (2012)
También sé que algunas personas utilizan psycopg2-ctypes.
Esta es la manera más fácil; para seguir siendo compatible con ambos, simplemente agregue este código en su Django settings.py
:
try:
import psycopg2
except ImportError:
# Fall back to psycopg2-ctypes
from psycopg2ct import compat
compat.register()
Probé esto hace algunos lanzamientos; lamentablemente, en mi experiencia, psycopg2-ctypes niega las pequeñas ganancias de rendimiento que ofrece PyPy. Pero YMMV, depende de qué tan compatible con JIT sea su código en general y de la fracción de tiempo que dedique realmente a ejecutar código Python. Y tal vez PyPy haya mejorado desde entonces.
y no creo que psycopg2-ctypes esté listo para Windows todavía
No lo he probado, pero ctypes es independiente de la plataforma. AFAICT, solo tiene que asegurarse de que la libpq.dll
biblioteca sea cargable (ubicada en un directorio en su variable de entorno PATH o directorio local) y debería funcionar en Windows como en Linux.
pypy-postgresql
Veo que Alex Gaynor ha creado una bifurcación de PyPy llamada pypy-postgresql.
No creo que esta sea una buena opción a largo plazo. La sucursal no se ha actualizado durante más de un año y mis intentos de construirla han fallado. Y parece incorrecto codificar un controlador PostgreSQL en el intérprete de todos modos.
Creo que tampoco hay binarios de pypy-postgresql, por lo que si desea usarlo, deberá compilar toda la rama de PyPy usted mismo. No para los débiles de corazón: se necesitan decenas de minutos y una máquina con al menos 4 GB de memoria. (Instrucciones oficiales: http://pypy.org/download.html#building-from-source )
Para construir, primero necesita la fuente. Si tiene Mercurial instalado, simplemente puede hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql
. De lo contrario, puede descargar el archivo zip "tip" de automagic: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip
Abra una línea de comando, vaya al directorio descomprimido y luego dentro pypy/translator/goal
Si tiene PyPy instalado, se recomienda usarlo para compilar:
pypy translate.py -Ojit
De otra manera:
python translate.py -Ojit
Lamentablemente, aquí es donde termina mi conocimiento. Me sale el error " BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG
"