sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo consigues que PyPy, Django y PostgreSQL trabajen juntos?

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()

tipos de psycopg2-c (2012)

También sé que algunas personas usan psycopg2-ctypes.

Esta es la manera más fácil; para mantener la compatibilidad 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 anula 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 qué fracción de tiempo realmente pasa ejecutando el código de Python. Y quizás PyPy haya mejorado desde entonces.

y no creo que psycopg2-ctypes esté listo para Windows todavía

No he probado esto, pero ctypes es independiente de la plataforma. AFAICT solo tienes que asegurarte de que el libpq.dll La biblioteca es cargable (ubicada en un directorio en su variable de entorno PATH o directorio local) y debería funcionar en Windows al igual que en Linux.

pypy-postgresql

Veo que Alex Gaynor ha hecho una bifurcación de PyPy llamada pypy-postgresql.

No creo que sea una buena opción a largo plazo. La rama 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 archivos binarios de pypy-postgresql, por lo que si desea usarlo, deberá crear la rama completa de PyPy usted mismo. No es 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 de "consejo" automático:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Abra una línea de comando, vaya al directorio descomprimido y luego dentro de pypy/translator/goal

Si tiene PyPy instalado, se recomienda usarlo para construir:

pypy translate.py -Ojit

De lo contrario:

python translate.py -Ojit

Lamentablemente aquí es donde termina mi conocimiento. Recibo el error "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "