Вложенная задача сельдерея (задачи внутри задач)Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Вложенная задача сельдерея (задачи внутри задач)

Сообщение Гость »


Я написал 2 задачи update_all_rss, но не знаю, какая из них лучше. может кто-нибудь объяснить, какой из них мне следует использовать?

Информация: каждая задача независима и не требует результата другой задачи.

Буду очень признателен, если вы дадите мне какие-либо предложения по оптимизации общей производительности этих задач

@shared_task(base=BaseTaskWithRetry, Task_time_limit=600) защита update_all_rss(): для xml_link_obj в XmlLink.objects.all().iterator(): update_single_rss.delay(xml_link_obj) против

@shared_task(base=BaseTaskWithRetry, Task_time_limit=600) защита update_all_rss(): xml_links = список(XmlLink.objects.all().iterator()) задачи = (update_single_rss.s(xml_link_obj) для xml_link_obj в xml_links) result_group = группа (задачи) result_group() если поможет, это задача update_single_rss:
@shared_task(base=BaseTaskWithRetry, Task_time_limit=120) защита update_single_rss(xml_link_obj): Channel_qs = Channel.objects.select_based('xml_link').prefetch_related("xml_link__rss_type").filter( xml_link=xml_link_obj) если канал_qs.exists(): канал = канал_qs.get() канал_парсер = канал_парсер_маппер (xml_link_obj.channel_parser) канал_информация = канал_парсер (xml_link_obj.xml_link) ifchannel.last_update !=channel_info.get("last_update"): Channel.last_update = Channel_info.get("last_update") items_parser = items_parser_mapper(xml_link_obj.items_parser) items_info = items_parser(xml_link_obj.xml_link) ItemClass = item_model_mapper(xml_link_obj.rss_type.name) пытаться: с транзакцией.atomic(): канал.сохранить() предметы = ( ItemClass(**элемент, канал=канал) для элемента в items_info если нет ItemClass.objects.filter(guid=item.get("guid")).exists() ) ItemClass.objects.bulk_create(предметы) кроме IntegrityError как e: return {"Сообщение": str(e)} return {"Сообщение": f"Канал {channel.title} был обновлен"} return {"Сообщение": f"Канал {channel.title} уже обновлен"} return {"Сообщение": f"Канала для {xml_link_obj.xml_link} не существует"}
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»