chore(): added async decision persistence
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import logging
|
||||
|
||||
from apps.events.services import cleanup_expired_pending_events
|
||||
from apps.events.services import (
|
||||
cleanup_expired_pending_events,
|
||||
decision_create,
|
||||
)
|
||||
from config.celery import app
|
||||
from config.errors import ConflictError
|
||||
|
||||
logger = logging.getLogger("lotty")
|
||||
|
||||
@@ -14,3 +18,35 @@ def cleanup_expired_pending_events_task(self):
|
||||
extra={"deleted": deleted},
|
||||
)
|
||||
return deleted
|
||||
|
||||
|
||||
@app.task(bind=True, name="events.persist_decision")
|
||||
def persist_decision_task(
|
||||
self,
|
||||
*,
|
||||
decision_id: str,
|
||||
flag_key: str,
|
||||
subject_id: str,
|
||||
experiment_id: str | None = None,
|
||||
variant_id: str | None = None,
|
||||
value: str,
|
||||
reason: str,
|
||||
):
|
||||
try:
|
||||
decision_create(
|
||||
decision_id=decision_id,
|
||||
flag_key=flag_key,
|
||||
subject_id=subject_id,
|
||||
experiment_id=experiment_id,
|
||||
variant_id=variant_id,
|
||||
value=value,
|
||||
reason=reason,
|
||||
)
|
||||
except ConflictError:
|
||||
logger.info(
|
||||
"decision_persist_skipped_conflict",
|
||||
extra={"decision_id": decision_id},
|
||||
)
|
||||
return {"status": "conflict", "decision_id": decision_id}
|
||||
|
||||
return {"status": "created", "decision_id": decision_id}
|
||||
|
||||
Reference in New Issue
Block a user