Запуск задачи из другой задачи
Я пытаюсь запустить задачу send_request
из задачи start_distribution
с помощью метода apply_async
не работает.
from celery import shared_task, group
from celery.utils.log import get_task_logger
from .models import Distribution, Client
logger = get_task_logger(__name__)
@shared_task(bind=True, max_retries=200, default_retry_delay=30)
def send_request(self, distribution_id, client_id):
pass
@shared_task(bind=True)
def start_distribution(self, distribution_id):
distribution = Distribution.objects.get(pk=distribution_id)
logger.info(f'distribution obj:')
logger.info(f' pk: {distribution.pk}')
logger.info(f' start date: {distribution.start_date}')
logger.info(f' end date: {distribution.end_date}')
logger.info(f' tag: {distribution.tag.name}')
logger.info(f' mobile_code : {distribution.mobile_code.mobile_code}')
logger.info(f' body message : {distribution.body_message}')
clients_for_send = Client.objects.filter(
mobile_code=distribution.mobile_code,
tag=distribution.tag
).all()
logger.info('Pk sending client:')
[logger.info(client.pk) for client in clients_for_send]
g = group(send_request.s(distribution_id, client.pk) for client in clients_for_send)
g.apply_async(
queue='external_req',
expires=distribution.end_date
)