import asyncio from typing import List, Union from celery.signals import worker_ready import background.update from background import celery from limiter import BatchLimiter @celery.task(name='process_update') def process_update(product_ids: list[int]): loop = asyncio.get_event_loop() return loop.run_until_complete(background.update.process_update(product_ids)) @celery.task(name='update_marketplace') def update_marketplace(marketplace_id: int): loop = asyncio.get_event_loop() return loop.run_until_complete(background.update.update_marketplace(marketplace_id)) @celery.task(name='update_marketplace_products') def update_marketplace_products(marketplace_id: int, product_ids: list[int]): loop = asyncio.get_event_loop() return loop.run_until_complete(background.update.update_marketplace_products(marketplace_id, product_ids)) @celery.task(name='update_marketplaces') def update_marketplaces(marketplace_ids: Union[List[int], None]): loop = asyncio.get_event_loop() return loop.run_until_complete(background.update.update_marketplaces(marketplace_ids)) @worker_ready.connect def worker_is_ready(sender, **kwargs): loop = asyncio.get_event_loop() limiter = BatchLimiter() loop.run_until_complete(limiter.clear_locks())