2014-07-01 6 views
13

हमारे पास "स्टेजिंग" परिनियोजन स्लॉट के साथ एक Azure वेबसाइट सेटअप है, और हम लंबे समय से चलने वाली पृष्ठभूमि नौकरियों को संसाधित करने के लिए निरंतर Azure WebJob का उपयोग करते हैं। ऐसा प्रतीत होता है कि जब आप वेबसाइट पर प्रकाशित होते हैं (और वेबजोब बाइनरीज़ को शामिल करते हैं), तो वेबजोब स्वयं को फिर से शुरू कर देगा अगर इसे पहले बंद कर दिया गया था।Azure WebJob को प्रकाशित करने के बाद शुरू करने से कैसे रोकें?

हमारे वर्तमान तैनाती प्रक्रिया के बाद दिखाई देता है: मचान

  • को

    1. तैनात तुरंत & जल्दी उसके चरण पर WebJob रोक
    2. धुआँ परीक्षण और (प्रसंस्करण संदेशों से 2 WebJobs को रोकने की कोशिश) STAGING कार्यों पर कोड सत्यापित करें
    3. प्रोडक्शन वेबजोब को रोकें (इसे कतार संदेशों को निकालने दें)
    4. बीच स्वैप करें उत्पादन और मचान
    5. उत्पादन WebJob (जो सिर्फ मचान WebJob था)

    वहाँ एक चाल (जैसे कि एक झंडा फ़ाइल या कुछ और) नहीं एक WebJob बताने के लिए प्रकाशित करने के बाद शुरू करने है शुरू

  • ?

  • उत्तर

    18

    बस अपने WebJob (बाइनरी) की जड़ में एक फ़ाइल disable.job बुलाया जोड़ने एक बंद कर दिया राज्य में एक सतत WebJob को तैनात करने के लिए, इस रूपरेखा है कि WebJob वर्तमान में बंद हो जाता है बता देंगे।

    इस व्यवहार को देखने के लिए आप बस एक सतत वेबजोब को रोक सकते हैं और देख सकते हैं कि यह फ़ाइल वेबजोब की निर्देशिका में जेनरेट और रखी गई है।

    +0

    बस इसका परीक्षण किया और यह बहुत अच्छा काम करता है। मैंने अपनी सी # कंसोल प्रोजेक्ट की जड़ में 'अक्षम.job' फ़ाइल जोड़ा और 'बिल्डिंग' पर अपनी बिल्ड एक्शन सेट की। – ericb

    +0

    @ प्रवेश मैं शपथ ग्रहण कर सकता था कि हाल ही में, जब एक साइट प्रकाशित हुई थी तब वेबबॉज का राज्य वही रहेगा - अगर यह रुक गया है, तो इसे रोक दें; यदि यह चल रहा है, तो इसे चलते रहें। तथ्य यह है कि मैं वेब ऐप कोड और/या वेबबॉज कोड का एक नया संस्करण प्रकाशित कर रहा हूं, इसे ढांचे द्वारा धारणा के रूप में नहीं देखा जाना चाहिए कि वेबबॉज की चलती स्थिति बदलनी चाहिए। एफवाईआई मैंने यहां इस पर पोस्ट किया है https://stackoverflow.com/questions/42380853/stopped-azure-webjobs-are-starting-following-publishing-of-web-app। – Matt

    0

    AFAIK, इसके लिए बॉक्स समाधान में से कोई भी नहीं है। हालांकि, आप एक ऐप सेटिंग सेट कर सकते हैं और जब यह शुरू होता है तो वेबबॉज कोड इसके लिए जांच कर सकता है। इसके अलावा, आप पर्यावरण को जानने के लिए HTTP_HOST चर का उपयोग कर सकते हैं।

    +0

    यह एक अच्छा विचार है, लेकिन यदि आप निरंतर नौकरी चलाने के लिए सेट करते हैं लेकिन आप वास्तव में RunAndBlock() को कॉल करने के बजाय इसे रोकते हैं, तो Azure को इसे पुनरारंभ करना चाहिए क्योंकि इसे बंद कर दिया गया है। क्या यह धारणा सही नहीं है? – jsgoupil

    12

    आप अपने स्टेजिंग स्लॉट में एप्लिकेशन सेटिंग WEBJOBS_STOPPED जोड़ सकते हैं और इसे 1 पर सेट कर सकते हैं। इस सेटिंग को 'स्लॉट सेटिंग' बनाएं ताकि यह उत्पादन के साथ स्वैप न हो।

    +0

    यह मेरे लिए काम किया। अधिक जानकारी: https://github.com/projectkudu/kudu/search?utf8=%E2%9C%93&q=IsWebJobsStopped –

    +1

    एक बार जब आप इसे सेट कर लेंगे, तो आप यह जांच सकते हैं कि नौकरी चल रही है ("रोक दिया गया है) आपके webjobs डैशबोर्ड: https://yoursubdomain.scm.azurewebsites.net/azurejobs/ – sammy34

    +0

    यह मेरे लिए काम करता है। स्वीकार्य उत्तर होना चाहिए IMO –

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