PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Pula połączeń bazy danych pracownika selera

Podoba mi się pomysł tigeronk2 dotyczący jednego połączenia na pracownika. Jak mówi, Celery utrzymuje własną pulę pracowników, więc tak naprawdę nie ma potrzeby tworzenia oddzielnej puli połączeń z bazą danych. Dokumentacja Celery Signal wyjaśnia, jak wykonać niestandardową inicjalizację, gdy tworzony jest pracownik, więc dodałem następujący kod do mojego task.py i wydaje się, że działa dokładnie tak, jak można się spodziewać. Udało mi się nawet zamknąć połączenia, gdy pracownicy są zamknięci:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać operatorów PostgreSQL JSON(B) zawierających znak zapytania? przez JDBC

  2. Termin składni SQL dla „GDZIE (col1, col2) <(val1, val2)”

  3. Postgres Kopiuj ze zmiennej z danymi CSV

  4. Błąd podczas mapowania kolumny PostgreSQL LTREE w trybie hibernacji

  5. Podziel kolumnę na wiele wierszy w Postgres