Django                
            Асинхронные задачи (сельдерей)
        
        
            
    Поиск…
замечания
Сельдерей - это очередь задач, которая может запускать фоновые или запланированные задания и очень хорошо интегрируется с Django. Сельдерей требует, чтобы что-то известное как брокер сообщений передавало сообщения от призыва к работникам. Этот брокер сообщений может быть redis, rabbitmq или даже Django ORM / db, хотя это не рекомендуется.
 Прежде чем начать с примера, вам нужно будет настроить сельдерей. Чтобы настроить сельдерей, создайте файл celery_config.py в главном приложении, параллельно файлу settings.py . 
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# broker url 
BROKER_URL = 'redis://localhost:6379/0'
# Indicate Celery to use the default Django settings module
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
app = Celery('config')
app.config_from_object('django.conf:settings')
# if you do not need to keep track of results, this can be turned off
app.conf.update(
    CELERY_RESULT_BACKEND=BROKER_URL,
)
# This line will tell Celery to autodiscover all your tasks.py that are in your app folders
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
 И в файле __init__.py основного приложения импортируйте приложение celery. как это 
# -*- coding: utf-8 -*- 
# Not required for Python 3. 
from __future__ import absolute_import
from .celery_config import app as celery_app  # noqa
Чтобы запустить работника сельдерея, используйте эту команду на уровне, где находится manage.py.
# pros is your django project, 
celery -A proj worker -l info
Простой пример добавления двух чисел
Для начала:
-  Установить сельдерей pip install celery
- настроить сельдерей (перейти в раздел замечаний)
from __future__ import absolute_import, unicode_literals
from celery.decorators import task
@task
def add_number(x, y):
    return x + y
 Вы можете запустить это асинхронно с помощью .delay() . 
 add_number.delay(5, 10) , где 5 и 10 являются аргументами для функции add_number 
 Чтобы проверить, завершила ли функция async операцию, вы можете использовать функцию .ready() для объекта async, возвращаемого методом delay . 
 Чтобы получить результат вычисления, вы можете использовать атрибут .result для объекта async. 
пример
async_result_object = add_number.delay(5, 10)
if async_result_object.ready():
    print(async_result_object.result)