|
20 | 20 | DB_NAME=settings.get('celery', 'db_name', fallback='celery.db.sqlite'), |
21 | 21 | ) |
22 | 22 | else: |
23 | | - CELERY_RESULT_BACKEND = '{DB_ENGINE}://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}'.format( |
24 | | - DB_ENGINE=settings.get('celery', 'db_engine'), |
25 | | - DB_USER=urllib.parse.quote(settings.get('celery', 'db_user')), |
26 | | - DB_PASS=urllib.parse.quote(settings.get('celery', 'db_pass')), |
27 | | - DB_HOST=settings.get('celery', 'db_host'), |
28 | | - DB_PORT=settings.get('celery', 'db_port'), |
29 | | - DB_NAME=settings.get('celery', 'db_name', fallback='celery'), |
30 | | - ) |
| 23 | + #: Attempt to retrieve Service Principal credentials |
| 24 | + service_principal_user = settings.get("celery", "AZURE_SERVICE_PRINCIPAL_USER", fallback=None) |
| 25 | + if service_principal_user: |
| 26 | + #: Initialize Celery Database Backend |
| 27 | + from src.conf.utils import CeleryAzureServicePrincipal |
| 28 | + azure_token_client = CeleryAzureServicePrincipal(settings) |
| 29 | + |
| 30 | + #: Use Service Principal Authentication |
| 31 | + azure_token = azure_token_client.get_access_token() |
| 32 | + CELERY_RESULT_BACKEND = "{DB_ENGINE}://{SP_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}".format( |
| 33 | + DB_ENGINE=settings.get('celery', 'db_engine'), |
| 34 | + SP_USER=urllib.parse.quote(service_principal_user), |
| 35 | + DB_PASS=urllib.parse.quote(azure_token), |
| 36 | + DB_HOST=settings.get('celery', 'db_host'), |
| 37 | + DB_PORT=settings.get("celery", "db_port", fallback="5432"), |
| 38 | + DB_NAME=settings.get("celery", "db_name", fallback="celery"), |
| 39 | + ) |
| 40 | + else: |
| 41 | + #: Fallback to Username/Password Authentication |
| 42 | + CELERY_RESULT_BACKEND = "{DB_ENGINE}://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}".format( |
| 43 | + DB_ENGINE=settings.get('celery', 'db_engine'), |
| 44 | + DB_USER=urllib.parse.quote(settings.get('celery', 'db_user')), |
| 45 | + DB_PASS=urllib.parse.quote(settings.get('celery', 'db_pass')), |
| 46 | + DB_HOST=settings.get('celery', 'db_host'), |
| 47 | + DB_PORT=settings.get('celery', 'db_port'), |
| 48 | + DB_NAME=settings.get('celery', 'db_name', fallback='celery'), |
| 49 | + ) |
| 50 | + |
31 | 51 |
|
32 | 52 | #: Celery config - AMQP task result expiration time |
33 | 53 | CELERY_AMQP_TASK_RESULT_EXPIRES = 1000 |
|
0 commit comments