PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come si fa a far lavorare insieme PyPy, Django e PostgreSQL?

psycopg2cffi (Aggiornato 2015)

psycopg2cffi è un altro sostituto compatibile con psycopg2 e dovrebbe fornire le migliori prestazioni PostgreSQL con PyPy. Aggiungilo al tuo settings.py per rimanere compatibile con entrambi:

try:
    import psycopg2
except ImportError:
    # Fall back to psycopg2cffi
    from psycopg2cffi import compat
    compat.register()

psycopg2-ctypes (2012)

So anche che alcune persone usano psycopg2-ctypes.

Questo è il modo più semplice; per rimanere compatibile con entrambi, aggiungi questo codice nel tuo Django settings.py :

try:
    import psycopg2
except ImportError:
    # Fall back to psycopg2-ctypes
    from psycopg2ct import compat
    compat.register()

L'ho testato alcune versioni fa; purtroppo nella mia esperienza, psycopg2-ctypes nega i piccoli guadagni in termini di prestazioni offerti da PyPy. Ma YMMV, dipende da quanto è compatibile con JIT il tuo codice in generale e da quale frazione di tempo dedichi effettivamente all'esecuzione del codice Python. E forse PyPy è appena migliorato da allora.

e non penso che psycopg2-ctypes sia ancora pronto per Windows

Non l'ho provato, ma ctypes è indipendente dalla piattaforma. AFAICT devi solo assicurarti che il libpq.dll la libreria è caricabile (situata in una directory nella variabile di ambiente PATH o nella directory locale) e dovrebbe funzionare su Windows proprio come in Linux.

pypy-postgresql

Vedo che Alex Gaynor ha creato un fork di PyPy chiamato pypy-postgresql.

Non credo che questa sia una buona scelta a lungo termine. Il ramo non è stato aggiornato per più di un anno e i miei tentativi di costruirlo sono falliti. E sembra comunque sbagliato codificare un driver PostgreSQL nell'interprete.

Credo che non ci siano nemmeno binari di pypy-postgresql, quindi se vuoi usarlo, dovresti creare tu stesso l'intero ramo PyPy. Non per i deboli di cuore:ci vogliono decine di minuti e una macchina con almeno 4 GB di memoria. (Istruzioni ufficiali:http://pypy.org/download.html#building-from-source)

Per costruire, hai prima bisogno della fonte. Se hai installato Mercurial, puoi semplicemente hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql . In caso contrario, puoi scaricare il file zip "tip" di automagic:https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Apri una riga di comando, vai nella directory decompressa e poi dentro pypy/translator/goal

Se hai installato PyPy, ti consigliamo di usarlo per la compilazione:

pypy translate.py -Ojit

Altrimenti:

python translate.py -Ojit

Purtroppo è qui che finisce la mia conoscenza. Ottengo l'errore "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG "