sql >> Databasteknik >  >> RDS >> PostgreSQL

Selleri Worker Databas Connection Pooling

Jag gillar tigeronk2s idé om en anslutning per arbetare. Som han säger, upprätthåller Celery sin egen pool av arbetare så det finns verkligen inget behov av en separat databasanslutningspool. Celery Signal-dokumenten förklarar hur man gör anpassad initiering när en arbetare skapas så jag lade till följande kod till min tasks.py och det verkar fungera precis som du förväntar dig. Jag kunde till och med stänga anslutningarna när arbetarna stängs av:

from celery.signals import worker_process_init, worker_process_shutdown

db_conn = None

@worker_process_init.connect
def init_worker(**kwargs):
    global db_conn
    print('Initializing database connection for worker.')
    db_conn = db.connect(DB_CONNECT_STRING)


@worker_process_shutdown.connect
def shutdown_worker(**kwargs):
    global db_conn
    if db_conn:
        print('Closing database connectionn for worker.')
        db_conn.close()


  1. WordPress – Bakom kulisserna, del 1

  2. Hur man hanterar sessioner i Node.js med Passport, Redis och MySQL

  3. hur man implementerar tabellarv i GreenDao

  4. Hur extraherar man ett numeriskt värde från en sträng i en MySQL-fråga?