PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Обединяване на връзки към база данни на Celery Worker

Харесва ми идеята на tigeronk2 за една връзка на работник. Както той казва, Celery поддържа свой собствен пул от работници, така че наистина няма нужда от отделен пул за връзка с база данни. Документите за Celery Signal обясняват как да направите персонализирана инициализация, когато е създаден работник, така че добавих следния код към моя tasks.py и изглежда работи точно както бихте очаквали. Дори успях да затворя връзките, когато работниците са изключени:

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. Не може да се изтрие база данни

  2. Използване на Kubernetes за внедряване на PostgreSQL

  3. Django + Psycopg2:InterfaceError:поддържа се само протокол 3

  4. Какво е сканиране на растерна памет в план за заявка?

  5. Защо Postgres не използва индекса?