2017-04-25 12 views
6

मैं सेलेरी का उपयोग करके कार्यों को प्रबंधित करना चाहता हूं। मैं एक एकल कार्य कतार (समरूपता 1 के साथ) रखना चाहता हूं और अलग-अलग प्राथमिकताओं के साथ कार्य को कतार में धक्का दे सकता हूं जैसे कि उच्च प्राथमिकता वाले कार्य दूसरों को पसंद करेंगे।सेलेरी टास्क प्राथमिकता

मैं बहुत की तरह एक कतार में तीन कार्यों द्वारा जोड़ा जा रहा:

add_tasks.py

from tasks import example_task 

example_task.apply_async((1), priority=1) 
example_task.apply_async((2), priority=3) 
example_task.apply_async((3), priority=2) 

मैं निम्नलिखित विन्यास है:

tasks.py

from __future__ import absolute_import, unicode_literals 
from celery import Celery 
from kombu import Queue, Exchange 
import time 

app = Celery('tasks', backend='rpc://', broker='pyamqp://') 

app.conf.task_queues = [Queue('celery', Exchange('celery'), routing_key='celery', queue_arguments={'x-max-priority': 10})] 


@app.task 
def example_task(task_num): 
    time.sleep(3) 
    print('Started {}'.format(task_num) 
    return True 

मैं तीसरे से पहले चलाने के लिए जोड़े गए दूसरे कार्य की अपेक्षा करता हूं, क्योंकि इसकी उच्च प्राथमिकता है लेकिन यह नहीं है। वे जोड़े गए क्रम में भागते हैं।

मैं दस्तावेज़ों का पालन कर रहा हूं और सोचा कि मैंने ऐप को सही तरीके से कॉन्फ़िगर किया है।

क्या मैं कुछ गलत कर रहा हूं या क्या मैं प्राथमिकता सुविधा को गलत समझ रहा हूं?

उत्तर

4

ऐसी संभावना है कि कतार में संदेशों को प्राथमिकता देने का कोई मौका नहीं है (क्योंकि वे सॉर्टिंग होने से पहले डाउनलोड हो जाते हैं)। इन दोनों सेटिंग्स के साथ प्रयास करें (आवश्यकतानुसार अपनी परियोजना के लिए अनुकूल):

CELERY_ACKS_LATE = True 
CELERYD_PREFETCH_MULTIPLIER = 1 

प्रीफ़ेच गुणक डिफ़ॉल्ट रूप से 4 है।

मैंने सेलरी की प्राथमिकता कार्य को बहुत कम पैमाने पर महसूस करने के लिए नमूना आवेदन विकसित किया था। कृपया इसे here पर देखें। इसे विकसित करते समय, मुझे एक बहुत ही समस्या का सामना करना पड़ा और सेटिंग में इस बदलाव ने वास्तव में इसे हल किया।

ध्यान दें कि आपको RabbitMQ संस्करण 3.5.0 या उच्चतर की भी आवश्यकता है।

+0

आपके उत्तर के लिए धन्यवाद। मैंने आपकी प्रोजेक्ट को डाउनलोड किया है और जैसा कि आप वर्णन करते हैं, सेटिंग्स के साथ दस्तावेज के रूप में इसे ठीक से चलाया है लेकिन अभी भी प्राथमिकता व्यवहार को काम नहीं कर रहा है। – EngineerCamp

+0

@EngineerCamp मैंने इसे फिर से क्लोन करने के बाद पुनः जांच की और यह ठीक काम करने लग रहा था। यहां एक छोटा पूर्वावलोकन वीडियो है [यहां] (https://www.youtube.com/watch?v=nQXO2kjGV9M&feature=youtu.be) केवल 1 सेलेरी कार्यकर्ता के साथ ताकि सॉर्ट किए जा रहे कार्यों का निरीक्षण करना आसान हो। वीडियो की शुरुआत में (जैसे वीडियो को 360p_ पर ट्रांसकोड किया जा रहा है), ** देखें कि 480p और 720p पर क्लिक किया गया है जब 480p और 720p क्लिक किया जाता है तब भी 480p पहले क्लिक किया जाता है **। –

+0

मैंने इसे एक और जाना दिया लेकिन अभी भी कोई भाग्य नहीं है। मैं पाइथन 3 का उपयोग कर रहा हूं और उबंटू 14.04 पर हूं, इसलिए शायद वहां कुछ अंतर हैं। – EngineerCamp

संबंधित मुद्दे