Рубрики
Без рубрики

Python Celerry – Как получить объект результата задачи по ID?

Что такое сельдерей? Сельдерей позволяет масштабировать ваше приложение путем распространения рабочей нагрузки среди нескольких рабочих машин или процессов. Сельдерей использует очереди задач как единицы работы. Выделенный рабочий процесс контролирует эти очереди задач и вытягивает новую работу от тех, если она станет доступной. Клиенты добавляют сообщения в очередь задач и брокеров … Python Celery – Как получить объект результата задачи по ID? Читать далее “

Автор оригинала: Chris.

Что такое сельдерей?

Сельдерей Позволяет масштабировать ваше приложение путем распространения рабочей нагрузки среди нескольких рабочих машин или процессов. Сельдерей использует очереди задач как единицы работы. Выделенный рабочий процесс контролирует эти очереди задач и вытягивает новую работу от тех, если она станет доступной. Клиенты добавляют сообщения в очередь задач, а брокеры доставляют их на работников. Вы можете масштабировать ваше приложение, используя несколько работников и брокеров.

Как создать минимальное приложение для сельдерея?

Минимальный Стандарт Пример для создания вашего первого приложения для сельдерея состоит только из 5 строк кода! Вы импортируете класс Celery и создаете приложение, используя его конструктор. Вы передаете его брокеру и определите задачу, используя Декоратор @ app.task Отказ Это об этом, чтобы начать!

from celery import Celery

app = Celery('hello', broker='amqp://guest@localhost//')

@app.task
def hello():
    return 'hello world'

Как получить идентификатор текущего объекта задачи?

Каждый сельдерей Задача Объект поставляется с ассоциированным Task.request объект. А Задача задачи Содержит информацию и состояние, связанную с текущей выполнением задачи. Вы можете получить доступ к идентификатору объекта выполнения задачи через app.task.request.id Отказ

Чтобы получить текущую задачу, вы можете запустить current_task.request от teake_task Модуль после импортирования его с помощью От сельдерея Import Centre_Task Отказ

Вот минимальный код код:

from celery import current_task
print(current_task.request)

Как получить объект результата задачи по ID?

У вас может быть несколько объектов результатов задач в очереди задач. У каждой задачи есть уникальный идентификатор. Если вы уже знаете идентификатор желаемого объекта задач, как получить его по ID?

Пример : Скажи, вы храните идентификатор задачи от Celery.result.asyncresult в базе данных вместе с соответствующей задач. С этим вы можете получить все идентификаторы задач, которые относятся к конкретному элементу. После извлечения task_id Из базы данных, как получить информацию о состоянии задачи?

Ответ : Использование task.asyncresult это Рекомендуется способ сделать это:

result = my_task.AsyncResult(task_id)
x = result.get()

Это возвращает Asyncresult Объект с использованием задач текущий результат Backend. Чтобы указать пользовательский или текущий бэкэнд по умолчанию, используйте app.asyncresult :

result = app.AsyncResult(task_id)
x = result.get()

Обратите внимание, что бэкэнд результата теперь устаревает, поэтому вы должны избежать его и использовать либо RPC Backend Для звонков в стиле RPC или настойчивые нездовые D Если вам нужен многогородный доступ к результатам ». ( Источник )

Нужно больше питона тренировки? Проверьте нашу бесплатную академию электронной почты с чит-листами, уроками Python и много веселья:

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.