खोज…


अजवाइन विन्यास

अजवायन

  1. स्थापना - pip install django-celery

  2. जोड़ना

  3. बुनियादी परियोजना संरचना।

     - src/
       - bin/celery_worker_start # will be explained later on
       - logs/celery_worker.log
       - stack/__init __.py
       - stack/celery.py
       - stack/settings.py
       - stack/urls.py
       - manage.py
    
  4. अपने stack/stack/ फ़ोल्डर में celery.py फ़ाइल जोड़ें।

     from __future__ import absolute_import
     import os
     from celery import Celery
     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'stack.settings')
     from django.conf import settings  # noqa
     app = Celery('stack')
     app.config_from_object('django.conf:settings')
     app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    
  5. अपने stack/stack/__init__.py निम्नलिखित कोड जोड़ें:

     from __future__ import absolute_import
     from .celery import app as celery_app  # noqa
    
  6. एक कार्य बनाएँ और इसे उदाहरण के लिए @shared_task() रूप में चिह्नित करें

     @shared_task()
     def add(x, y):
         print("x*y={}".format(x*y))
    
  7. चल रहे अजवाइन कार्यकर्ता "हाथ से":

    celery -A stack worker -l info अगर आप भी जोड़ना चाहते हैं

चल रहा है पर्यवेक्षक

  1. अजवाइन कार्यकर्ता शुरू करने के लिए एक स्क्रिप्ट बनाएँ। अपने ऐप के भीतर अपनी स्क्रिप्ट डालें। उदाहरण के लिए: stack/bin/celery_worker_start

     #!/bin/bash
     
     NAME="StackOverflow Project - celery_worker_start"
     
     PROJECT_DIR=/home/stackoverflow/apps/proj/proj/
     ENV_DIR=/home/stackoverflow/apps/proj/env/
     
     echo "Starting $NAME as `whoami`"
     
     # Activate the virtual environment
     cd "${PROJECT_DIR}"
     
     if [ -d "${ENV_DIR}" ]
     then
         . "${ENV_DIR}bin/activate"
     fi
     
     celery -A stack --loglevel='INFO'
    
  2. अपने नए बनाए गए स्क्रिप्ट में निष्पादन अधिकार जोड़ें:

    chmod u+x bin/celery_worker_start

  3. पर्यवेक्षक स्थापित करें (यदि पर्यवेक्षक पहले से स्थापित है तो इस परीक्षा को छोड़ दें)

    apt-get install supervisor

  4. अजवाइन शुरू करने के लिए अपने पर्यवेक्षक के लिए कॉन्फ़िगर फ़ाइल जोड़ें। इसे /etc/supervisor/conf.d/stack_supervisor.conf में /etc/supervisor/conf.d/stack_supervisor.conf

     [program:stack-celery-worker]
     command = /home/stackoverflow/apps/stack/src/bin/celery_worker_start
     user = polsha
     stdout_logfile = /home/stackoverflow/apps/stack/src/logs/celery_worker.log
     redirect_stderr = true
     environment = LANG = en_US.UTF-8,LC_ALL = en_US.UTF-8
     numprocs = 1
     autostart = true
     autorestart = true
     startsecs = 10
     stopwaitsecs = 600
     priority = 998
    
  5. फिर से पढ़ना और पर्यवेक्षक को अद्यतन करना

     sudo supervisorctl reread
         stack-celery-worker: available
     sudo supervisorctl update
         stack-celery-worker: added process group
    
  6. मूल आज्ञा

     sudo supervisorctl status stack-celery-worker                       
         stack-celery-worker      RUNNING    pid 18020, uptime 0:00:50
     sudo supervisorctl stop stack-celery-worker  
         stack-celery-worker: stopped
     sudo supervisorctl start stack-celery-worker                        
         stack-celery-worker: started
     sudo supervisorctl restart stack-celery-worker 
         stack-celery-worker: stopped
         stack-celery-worker: started
    

सुपरवाइजर के साथ अजवाइन + रैबिटमक्यू

संदेश-पासिंग को संभालने के लिए अजवाइन की आवश्यकता होती है। हम RabbitMQ का उपयोग करते हैं क्योंकि यह सेटअप करना आसान है और यह अच्छी तरह से समर्थित है।

निम्नलिखित कमांड का उपयोग करके खरगोशबिट स्थापित करें

sudo apt-get install rabbitmq-server

इंस्टॉलेशन पूरा होने के बाद, उपयोगकर्ता बनाएं, एक वर्चुअल होस्ट जोड़ें और अनुमतियाँ सेट करें।

sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl add_vhost myvhost
sudo rabbitmqctl set_user_tags myuser mytag
sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

सर्वर शुरू करने के लिए:

sudo rabbitmq-server

हम अजवाइन को पाइप से स्थापित कर सकते हैं:

pip install celery

आपकी Django सेटिंग में, आपका ब्रोकर URL तब कुछ ऐसा दिखेगा

BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'

अब अजवाइन कार्यकर्ता शुरू करें

celery -A your_app worker -l info

यह कमांड आपके django ऐप में परिभाषित किसी भी कार्य को चलाने के लिए एक Celery कार्यकर्ता को शुरू करता है।

पर्यवेक्षक एक पायथन प्रोग्राम है जो आपको किसी भी यूनिक्स प्रक्रिया को नियंत्रित और चालू रखने की अनुमति देता है। यह दुर्घटनाग्रस्त प्रक्रियाओं को भी फिर से शुरू कर सकता है। हम यह सुनिश्चित करने के लिए उपयोग करते हैं कि सेलेरी के कार्यकर्ता हमेशा चल रहे हैं।

सबसे पहले, पर्यवेक्षक स्थापित करें

sudo apt-get install supervisor

अपने पर्यवेक्षक conf.d (/etc/supervisor/conf.d/your_proj.conf) में अपनी_प्रो .conf फ़ाइल बनाएँ:

[program:your_proj_celery]
command=/home/your_user/your_proj/.venv/bin/celery --app=your_proj.celery:app worker -l info
directory=/home/your_user/your_proj
numprocs=1
stdout_logfile=/home/your_user/your_proj/logs/celery-worker.log
stderr_logfile=/home/your_user/your_proj/logs/low-worker.log
autostart=true
autorestart=true
startsecs=10

एक बार जब हमारी कॉन्फ़िगरेशन फ़ाइल बन जाती है और बच जाती है, तो हम पर्यवेक्षक कमांड के माध्यम से अपने नए कार्यक्रम के पर्यवेक्षक को सूचित कर सकते हैं। सबसे पहले हम सुपरवाइजर को /etc/supervisor/conf.dll में किसी भी नए या परिवर्तित प्रोग्राम कॉन्फ़िगरेशन को देखने के लिए कहते हैं:

sudo supervisorctl reread

इसके साथ किसी भी परिवर्तन को लागू करने के लिए कहकर अनुसरण किया गया:

sudo supervisorctl update

एक बार जब हमारे कार्यक्रम चल रहे हैं, तो निस्संदेह एक समय होगा जब हम अपनी स्थिति को रोकना, फिर से शुरू करना या देखना चाहेंगे।

sudo supervisorctl status

अपने अजवाइन उदाहरण को पुनः आरंभ करने के लिए:

sudo supervisorctl restart your_proj_celery


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