feature/alembic-daf
This commit is contained in:
@@ -1,12 +1,21 @@
|
||||
import os
|
||||
import logging
|
||||
from celery import Celery
|
||||
from celery.signals import task_postrun, task_prerun
|
||||
|
||||
from core.database import reset_rls_context_tokens, rls_company_var, rls_tenant_var
|
||||
from core.config import settings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
valkey_url = os.getenv("VALKEY_URL", "redis://valkey:6379/0")
|
||||
print(f"DEBUG: Celery Broker URL: {valkey_url}")
|
||||
logger.info(
|
||||
"Initializing Celery app app_version=%s environment=%s broker=%s",
|
||||
settings.APP_VERSION,
|
||||
settings.ENVIRONMENT,
|
||||
valkey_url,
|
||||
)
|
||||
|
||||
# Configurar broker y backend explícitamente en el constructor
|
||||
celery_app = Celery(
|
||||
@@ -46,6 +55,20 @@ def _set_rls_context_from_task(task_id=None, task=None, args=None, kwargs=None,
|
||||
|
||||
tenant_id = _coerce_int(headers.get("rls_tenant_id"))
|
||||
company_id = _coerce_int(headers.get("rls_company_id"))
|
||||
if tenant_id is None:
|
||||
logger.warning(
|
||||
"Celery task_prerun missing rls_tenant_id task=%s task_id=%s headers=%s",
|
||||
getattr(task, "name", "<unknown>"),
|
||||
task_id,
|
||||
headers,
|
||||
)
|
||||
logger.info(
|
||||
"Celery task_prerun RLS context task=%s task_id=%s tenant_id=%s company_id=%s",
|
||||
getattr(task, "name", "<unknown>"),
|
||||
task_id,
|
||||
tenant_id,
|
||||
company_id,
|
||||
)
|
||||
|
||||
token_t = rls_tenant_var.set(tenant_id)
|
||||
token_c = rls_company_var.set(company_id)
|
||||
@@ -60,6 +83,13 @@ def _reset_rls_context_from_task(task_id=None, task=None, **_):
|
||||
if tokens is None:
|
||||
return
|
||||
token_t, token_c = tokens
|
||||
logger.info(
|
||||
"Celery task_postrun clearing RLS context task=%s task_id=%s tenant_id=%s company_id=%s",
|
||||
getattr(task, "name", "<unknown>"),
|
||||
task_id,
|
||||
rls_tenant_var.get(),
|
||||
rls_company_var.get(),
|
||||
)
|
||||
reset_rls_context_tokens(token_t, token_c)
|
||||
delattr(task, _RLS_TOKENS_ATTR)
|
||||
|
||||
|
||||
@@ -53,6 +53,9 @@ class Settings(BaseSettings):
|
||||
def strip_quotes(cls, v: str) -> str:
|
||||
if v and isinstance(v, str):
|
||||
v = v.strip().strip('"').strip("'")
|
||||
# Evitar que solo espacios en .env se conviertan en "/" (rompe httpx: falta protocolo).
|
||||
if not v:
|
||||
return ""
|
||||
if not v.endswith("/"):
|
||||
v += "/"
|
||||
return v
|
||||
|
||||
Reference in New Issue
Block a user