मेरे पास टाइमर ट्रिगर के साथ Azure फ़ंक्शन है।

public static void Run([TimerTrigger("0 */15 * * * *"), Disable("True")]TimerInfo myTimer, TraceWriter log)

यहां Disable("true") काम नहीं कर रहा है। यह function.json के रूप में उत्पन्न करता है "disabled": "True", जो सही नहीं है। यह "disabled": True, होना चाहिए अक्षम करें केवल स्ट्रिंग मान स्वीकार करता है। क्या इसका परिवर्तन करने के लिए कोई रास्ता है? या फ़ंक्शन को अक्षम करने का कोई अन्य तरीका?

10
Avinash patil 18 अगस्त 2017, 09:01

5 जवाब

सबसे बढ़िया उत्तर

गुण अक्षम करें डिफ़ॉल्ट मान true है।

Disable("true") के बजाय Disable() का प्रयोग करें।

तो कोड इस तरह दिखेगा

public static void Run([TimerTrigger("0 */15 * * * *"), Disable()]TimerInfo myTimer, TraceWriter log)

यदि आप फ़ंक्शन को सक्षम करना चाहते हैं तो Disable("False") का उपयोग करें।

9
Avinash patil 18 अगस्त 2017, 11:48

क्या आपने अपने समाधान के अंदर host.json को संशोधित करने का प्रयास किया है? रनटाइम पर लोड करने के लिए कौन से फ़ंक्शन निर्दिष्ट करने के लिए इसमें आपके लिए निम्न गुण हैं।

// Array of functions to load. Only functions in this list will be enabled.
// If not specified, all functions are enabled.
"functions": ["QueueProcessor", "GitHubWebHook"]

ध्यान दें कि यदि आपके समाधान में कई फ़ंक्शन ऐप प्रोजेक्ट हैं, तो आपको उनके संबंधित host.json में भी बदलाव करना होगा (अर्थात प्रत्येक प्रोजेक्ट का अपना host.json होता है)

दस्तावेज़ीकरण: https://github.com/Azure/azure- webjobs-sdk-script/wiki/host.json

4
Harris K. 15 सितंबर 2017, 05:05

स्ट्रिंग टाइप किया गया मान - "अक्षम": "सत्य" भी फ़ंक्शन को अक्षम कर सकता है। कृपया निम्नलिखित के रूप में परीक्षा परिणाम देखें।

यहाँ मेरी कार्य परिभाषा है।

public static void Run([TimerTrigger("0 */5 * * * *"),Disable("true")]TimerInfo myTimer, TraceWriter log)

यहाँ Azure पोर्टल पर प्रकाशित कार्य है।

enter image description here

2
Amor 18 अगस्त 2017, 09:13

मैं इस उत्तर को जोड़ना चाहता था, क्योंकि मैं इसे भी खोज रहा हूं और मेरा मानना ​​​​है कि मुझे डिबगिंग/विकास उद्देश्यों के लिए कार्यों को अक्षम करने का एक अच्छा तरीका मिला है (और इन स्थानीय परिवर्तनों से बचने के लिए तैनाती पाइपलाइन/स्रोत नियंत्रण में शामिल हों)।

मैं #if DEBUG कथनों को Disable(string SettingsName) विशेषता के साथ संयोजित करता हूं:

कोड का निम्नलिखित भाग काम पर अलग-अलग चीजें दिखाता है:

  • डिसेबल एट्रीब्यूट सही या गलत को एक मान के रूप में इंगित करने के लिए पैरामीटर का उपयोग नहीं कर रहा है, लेकिन यह एक ऐपसेटिंग को संदर्भित करता है (जिसे आप local.settings.json फ़ाइल में डाल सकते हैं)। इस पोस्ट में दूसरा स्निपेट देखें। इसलिए, ऐपसेटिंग फ़ाइल में बस उस सेटिंग को बदलकर, मैं अपने गिट रेपो या परिनियोजन पाइपलाइनों को प्रभावित किए बिना आसानी से ट्रिगर्स को सक्षम और अक्षम कर सकता हूं।
  • दूसरी दिलचस्प बात यह है कि TimerTrigger का उपयोग करते समय RunOnStartup = true पैरामीटर। यह एक (जिसे मैं केवल DEBUG कंपाइलर निर्देशों के साथ सक्षम करता हूं), मुझे अगले CRON चक्र के होने की प्रतीक्षा किए बिना, तुरंत टाइमर फ़ंक्शन को ट्रिगर करने की अनुमति देगा। (इस स्टैकओवरफ़्लो में के रूप में वर्णित आपके स्थानीय फ़ंक्शन एंडपॉइंट पर एक पोस्ट करना एक विकल्प होगा। पोस्ट)। तो फिर, यह मानते हुए कि आप अपने उत्पादन कार्यभार को रिलीज़ कॉन्फ़िगरेशन में चलाते हैं, यह केवल आपके स्थानीय विकास परिवेश को प्रभावित कर रहा है, न कि आपकी विकास टीम या रिलीज़ को।

पहला स्निपेट (विशेषताएं)

#if DEBUG
        [Disable("disable-transactioncrawler")]
#endif
        [FunctionName("TransactionCrawler")]
        public async Task Run([TimerTrigger("50 */10 * * * *"
#if DEBUG
                , RunOnStartup = true
#endif
            )]TimerInfo myTimer, ILogger log)
        {
                // Logic comes here
        }

दूसरा स्निपेट (local.appsettings.json)

{
  "Values": 
  {
    "disable-transactioncrawler": false
  }
}

निम्नलिखित 'समाधान' आमतौर पर आपके उत्पादन कोड को प्रभावित करते हैं, जिससे समस्याएं हो सकती हैं:

  • केवल Disable() का उपयोग करने से आप इसे बाद में कॉन्फ़िगर/बदलने की अनुमति नहीं दे रहे हैं
  • केवल उन ट्रिगर्स को शामिल करने के लिए host.json फ़ाइल को अपडेट करना, जिन्हें आप चलाना चाहते हैं, इस परिवर्तन के उत्पादन में आने का जोखिम भी है।
6
Sam Vanhoutte 14 फरवरी 2020, 15:37

मैंने local.settings.json का उपयोग करके अक्षम करने का प्रयास किया, और स्थानीय रूप से डिबगिंग करते समय एमुलेटर विंडो वास्तव में कहती है कि नामित फ़ंक्शन अक्षम है, लेकिन इसे वैसे भी कॉल करता है! यह वीएस2017 और 2019 में समान है।

वर्तमान में मैं जिस वर्कअराउंड का उपयोग कर रहा हूं वह इस ऐप सेटिंग के लिए मेरे फ़ंक्शन में पहली पंक्ति के रूप में परीक्षण करना है और तुरंत वापस आना है:

    if(ConfigurationManager.AppSettings["AzureWebJobs.TimerTriggeredFunction.Disabled"] == "true") return;
-1
Tony Gray 15 सितंबर 2019, 22:15