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

Selleri Worker Database Connection Pooling

Jeg kan godt lide tigeronk2s idé om én forbindelse pr. arbejder. Som han siger, vedligeholder Celery sin egen pulje af arbejdere, så der er virkelig ikke behov for en separat databaseforbindelsespulje. Celery Signal-dokumenterne forklarer, hvordan man laver tilpasset initialisering, når en arbejder er oprettet, så jeg tilføjede følgende kode til min tasks.py, og det ser ud til at fungere præcis, som du ville forvente. Jeg var endda i stand til at lukke forbindelserne, når arbejderne er lukket:

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. T-SQL:Hvordan bruger man parametre i dynamisk SQL?

  2. Tjek for x på hinanden følgende dage - givet tidsstempler i databasen

  3. Få MySQL-databaseoutput via PHP til XML

  4. Vil GETUTCDATE() returnere den samme værdi, hvis den bruges to gange i den samme sætning?