खोज…


टिप्पणियों

अजवाइन एक कार्य कतार है जो पृष्ठभूमि या अनुसूचित नौकरियों को चला सकती है और Django के साथ बहुत अच्छी तरह से एकीकृत करती है। अजवाइन को संदेश दलाल के रूप में जाना जाता है जो श्रमिकों को आह्वान से संदेश पारित करने के लिए आवश्यक है। यह संदेश ब्रोकर रेडिस, रब्बिटम या यहां तक कि 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 फ़ाइल अजवाइन ऐप आयात करें। इस तरह

# -*- coding: utf-8 -*- 
# Not required for Python 3. 
from __future__ import absolute_import

from .celery_config import app as celery_app  # noqa

अजवाइन के कार्यकर्ता को चलाने के लिए, इस कमांड का उपयोग उस स्तर पर करें, जहां मैनेजमेन्ट है।

# pros is your django project, 
celery -A proj worker -l info

2 नंबर जोड़ने के लिए सरल उदाहरण

आरंभ करना:

  1. अजवाइन pip install celery करें अजवाइन pip install celery करें
  2. अजवाइन कॉन्फ़िगर करें (टिप्पणी अनुभाग के प्रमुख)
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 फ़ंक्शन ने कार्य पूरा कर लिया है, आप delay विधि द्वारा लौटाए गए async ऑब्जेक्ट पर .ready() फ़ंक्शन का उपयोग कर सकते हैं।

अभिकलन के परिणाम प्राप्त करने के लिए, आप। .result ऑब्जेक्ट पर .result विशेषता का उपयोग कर सकते हैं।

उदाहरण

async_result_object = add_number.delay(5, 10)
if async_result_object.ready():
    print(async_result_object.result)


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow