python - Daemonizing celery -


निम्नलिखित निर्देश मिले, मैंने /etc/init.d/celeryd में कॉपी किया, फिर इसे बनाया निष्पादन योग्य;

<पूर्व> $ ll /etc/init.d/celeryd -rwxr-xr-x 1 रूट रूट 9481 फरवरी 19 11:27 /etc/init.d/celeryd*

मैंने निर्देशानुसार निर्देशित फाइल / etc / default / celeryd बनाया है:

  # शुरू करने के लिए नोड्स के नाम # अधिकांश केवल एक ही प्रारंभ होगा नोड: # CELERYD_NODES = "worker1" # परन्तु आप एकाधिक को भी शुरू कर सकते हैं और प्रत्येक के लिए # सेटिंग्स को कॉन्फ़िगर कर सकते हैं (उदाहरण के लिए 'सेलरी मल्टी - हेल्प' देखें)। CELERYD_NODES = "worker1 worker2 worker3" # पूर्णतया या रिश्तेदार पथ 'अजवाइन' कमांड में: CELERY_BIN = "/ usr / local / bin / celery" #CELERY_BIN = "/ virtualenvs / def / bin / celery" # अनुप्रयोग उपयोग करने के लिए उदाहरण # अगर आप किसी ऐप # CELERY_APP = "proj" # या पूरी तरह से योग्य नहीं उपयोग करते हैं, तो इस लाइन को टिप्पणी दें # CELERY_APP = "proj.tasks: ऐप" # कहाँ शुरू करने के लिए chdir CELERYD_CHDIR = "/ path / to / folder / containing / tasks /" # कार्यकर्ता CELERYD_OPTS = "- समय-सीमा = 3000 --concurrency = 3 --config = celeryconfig" #% एन के लिए अतिरिक्त कमांड-लाइन तर्क नोडनाम के पहले भाग के साथ बदल दिया गया CELERYD_LOG_FILE = "/ var / log / celery /% N.log" CELERYD_PID_FILE = "/ var / run / celery /% N.pid" # श्रमिकों को एक गैर-मान्यता प्राप्त उपयोगकर्ता के रूप में चलाना चाहिए। # आपको मैन्युअल रूप से इस उपयोगकर्ता को बनाने की आवश्यकता है (या आप # उपयोगकर्ता / समूह संयोजन जो पहले से मौजूद है, उदा।, कोई भी चुन सकते हैं)। CELERYD_USER = "अजवाइन" CELERYD_GROUP = "अजवाइन" # अगर सक्षम पाइड और लॉग निर्देशिकाएं गायब हो जाएंगी, # और userid / group कॉन्फ़िगर किए गए हैं। CELERY_CREATE_DIRS = 1  

नोट : मैंने - config = celeryconfig भाग को CELERYD_OPTS में जोड़ा।

I

  sudo useradd -n -m -system -s / bin / false celery  

के साथ एक नया उपयोगकर्ता अजवाइन और उसके बाद समूह अजवाइन बनाया और उपयोगकर्ता को इसमें जोड़ा गया:

  $ id सीलरी यूआईडी = 99 9 (अजवाइन) gid = 1005 (अजवाइन) समूह = 1005 (अजवाइन) <  

/ var / run / celery /

/ Var / log / celery /

जब मैं सेवा शुरू करने की कोशिश करता हूं, तो मुझे कोई त्रुटि नहीं मिलती:

  $ sudo सेवा सेलेरीड शुरू अजवाइन v10.0। Config स्क्रिप्ट का उपयोग करना: / etc / default / celeryd  

लेकिन स्थिति मुझे "कोई पाइड्स नहीं मिली":

  $ sudo सेवा सेलेरीड स्थिति अजवाइन वीआईटी v10 .0। Config स्क्रिप्ट का उपयोग करना: / etc / default / celeryd celeryd रोक दिया गया है: कोई पाइड्स नहीं मिला  

और वास्तव में, ps -ef कोई परिणाम नहीं देता है और कोई पीआईडी ​​फ़ाइल या लॉग फाइल नहीं बनाई जाती है:

<पूर्व> $ ll / var / run / celery कुल 0 drwxr-sr-x 2 अजवाइन सेलेरी 40 फरवरी 19 14:13 ./ drwxr-xr-x 16 रूट रूट 620 फ़रवरी 19 12:35 .. / $ एल / var / लॉग / सेलेरी कुल 8 ड्रवर्क्स-एसआर-एक्स 2 अजवाइन अजवाइन 4096 फरवरी 1 9। 14:13 ./ drwxr-xr-x 13 रूट रूट 4096 Feb 19 11:37 ../

अतिरिक्त जानकारी:

<पूर्व> $ pip फ्रीज | Grep अजवाइन अजवाइन == 3.1.9

मैं क्या याद आ रही है? मैं कहां देख रहा हूं कि सल्लरी क्यों नहीं शुरू हो रही है?

मैंने आपके चरणों को दोहराया और इसके परिणामस्वरूप एक ही समस्या हुई। समस्या कैलरी उपयोगकर्ता थी जो शेल नहीं थी

  सूडो यूजरड-एन-एम -सिस्टम -स / बिन / झूठी अजवाइन  

बदलना -s / bin / false करने के लिए -s / bin / bash मुद्दा तय इसका कारण यह है कि सेलेरीड इनिट स्क्रिप्ट सेलेरी कमांड को निष्पादित करने के लिए अजवाइन उपयोगकर्ता के शेल का उपयोग करता है एक शेल के बिना, नीचे दी गई सु आदेश चुपचाप से निकलता है।

  _chuid () {"$ CELERYD_USER" -क "$ CELERYD_MULTI $ *"}  

Comments