Skip to content

Commit

Permalink
(BSR)[API] feat: gate celery usage behind FF
Browse files Browse the repository at this point in the history
  • Loading branch information
lgerard-pass committed Jan 30, 2025
1 parent 8637166 commit c0899e4
Show file tree
Hide file tree
Showing 9 changed files with 431 additions and 98 deletions.
47 changes: 2 additions & 45 deletions api/poetry.lock

Large diffs are not rendered by default.

15 changes: 12 additions & 3 deletions api/src/pcapi/core/external/sendinblue.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,15 @@ def update_contact_email(user: users_models.User, old_email: str, new_email: str
)

if asynchronous:
update_contact_attributes_task_cloud_tasks.delay(contact_request)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
update_contact_attributes_task_celery.delay(contact_request)
else:
update_contact_attributes_task_cloud_tasks.delay(contact_request)
else:
update_contact_attributes_task_cloud_tasks(contact_request)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
update_contact_attributes_task_celery(contact_request)
else:
update_contact_attributes_task_cloud_tasks(contact_request)


def update_contact_attributes(
Expand Down Expand Up @@ -152,7 +158,10 @@ def update_contact_attributes(
)

if asynchronous:
update_contact_attributes_task_cloud_tasks.delay(contact_request)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
update_contact_attributes_task_celery.delay(contact_request)
else:
update_contact_attributes_task_cloud_tasks.delay(contact_request)
else:
make_update_request(contact_request)

Expand Down
15 changes: 12 additions & 3 deletions api/src/pcapi/core/mails/backends/sendinblue.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,15 @@ def send_mail(
use_pro_subaccount=data.template.use_pro_subaccount,
)
if data.template.use_priority_queue:
send_transactional_email_primary_task_cloud_tasks.delay(payload)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
send_transactional_email_primary_task_celery.delay(payload)
else:
send_transactional_email_primary_task_cloud_tasks.delay(payload)
else:
send_transactional_email_secondary_task_cloud_tasks.delay(payload)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
send_transactional_email_secondary_task_celery.delay(payload)
else:
send_transactional_email_secondary_task_cloud_tasks.delay(payload)

elif isinstance(data, models.TransactionalWithoutTemplateEmailData):
payload = serializers.SendTransactionalEmailRequest(
Expand All @@ -74,7 +80,10 @@ def send_mail(
params=None,
tags=None,
)
send_transactional_email_secondary_task_cloud_tasks.delay(payload)
if FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS.is_active():
send_transactional_email_secondary_task_celery.delay(payload)
else:
send_transactional_email_secondary_task_cloud_tasks.delay(payload)

else:
raise ValueError(f"Tried sending an email via sendinblue, but received incorrectly formatted data: {data}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ def send_transactional_email(payload: SendTransactionalEmailRequest) -> None:

try:
configuration = brevo_python.Configuration()
configuration = sib_api_v3_sdk.Configuration()
if settings.PROXY_CERT_BUNDLE is not None:
configuration.ssl_ca_cert = settings.PROXY_CERT_BUNDLE
if payload.use_pro_subaccount:
Expand Down
4 changes: 3 additions & 1 deletion api/src/pcapi/models/feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ class FeatureToggle(enum.Enum):
ENABLE_PRO_FEEDBACK = "Activer l'envoi des commentaires du portail pro vers Harvestr"
ENABLE_MOVIE_FESTIVAL_RATE = "Activer les tarifs spéciaux pour un festival cinéma"
# For features under construction, a temporary feature flag must be named with the `WIP_` prefix
WIP_ASYNCHRONOUS_CELERY_TASKS = "Activer le backend de tâches asynchrone Celery pour les tâches qui le supporte"
WIP_ENABLE_BREVO_PRO_SUBACCOUNT = "Activer l'utilisation du sous-compte Brevo pour les mails pros"
WIP_ENABLE_REMINDER_MARKETING_MAIL_METADATA_DISPLAY = "Changer le template d'email de confirmation de réservation"
WIP_ENABLE_NEW_FINANCE_WORKFLOW = "Active le nouveau workflow finance"
WIP_ENABLE_MARSEILLE = "Activer Marseille en grand"
Expand Down Expand Up @@ -200,7 +202,7 @@ def nameKey(self) -> str:
FeatureToggle.ID_CHECK_ADDRESS_AUTOCOMPLETION,
FeatureToggle.LOG_EMS_CINEMAS_AVAILABLE_FOR_SYNC,
FeatureToggle.SYNCHRONIZE_TITELIVE_API_MUSIC_PRODUCTS,
FeatureToggle.WIP_2025_SIGN_UP,
FeatureToggle.WIP_ASYNCHRONOUS_CELERY_TASKS,
FeatureToggle.WIP_COLLAPSED_MEMORIZED_FILTERS,
FeatureToggle.WIP_DISABLE_CANCEL_BOOKING_NOTIFICATION,
FeatureToggle.WIP_DISABLE_NOTIFY_USERS_BOOKINGS_NOT_RETRIEVED,
Expand Down
2 changes: 1 addition & 1 deletion api/src/pcapi/tasks/sendinblue_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def update_contact_attributes_task_cloud_tasks(payload: UpdateSendinblueContactR


@task(SENDINBLUE_TRANSACTIONAL_EMAILS_PRIMARY_QUEUE_NAME, "/sendinblue/send-transactional-email-primary") # type: ignore[arg-type]
def send_transactional_email_primary_cloud_tasks(payload: SendTransactionalEmailRequest) -> None:
def send_transactional_email_primary_task_cloud_tasks(payload: SendTransactionalEmailRequest) -> None:
send_transactional_email(payload)


Expand Down
Loading

0 comments on commit c0899e4

Please sign in to comment.