फ़ंक्शन के लिए स्वचालित त्रुटि-सहिष्णु टेम्पलेट

लेखक:शून्य, दिनांकः 2016-03-08 17:27:56
टैगःऔजार

इस टेम्पलेट को कॉल करने पर क्लिक करने से स्वचालित रूप से निर्दिष्ट एपीआई फ़ंक्शन पर पुनः प्रयास और त्रुटि होती है, बहु-विनिमय का समर्थन करता है


// 模板初始化时调用
function init() {
    // 过滤常见错误
    if (EnableErrorFilter) {
        SetErrorFilter("502:|503:|tcp|character|connection|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused");
    }
    // 重定义需要容错的函数
    var names = ApiList.split(',');
    _.each(exchanges, function(e) {
        _.each(names, function(name) {
            if (typeof(e[name]) !== 'function') {
                throw "尝试容错 " + name + " 失败, 请确认存在此API并且输入正确.";
            }
            var old = e[name];
            e[name] = function() {
                var r;
                while (!(r = old.apply(this, Array.prototype.slice.call(arguments)))) {
                    if (Debug) {
                        Log(e.GetLabel(), name, "调用失败", RetryInterval, "毫秒后重试...");
                    }
                    Sleep(RetryInterval);
                }
                return r;
            };
        });
    });
    Log("容错机制开启", names);
}

// Test
function main() {
    // 此时GetTicker就不需要重试了
    Log(exchange.GetTicker());
}

संबंधित

अधिक

लिलिलक्या आपको लगता है कि एक्सचेंज.गो के लिए मल्टी-थ्रेड समर्थन कैसा है?

मोमोक्समैं यह नहीं समझता कि इसे कैसे इस्तेमाल किया जाए, लेकिन कुछ सवाल हैंः 1. Hook ((ApiList.split ((',')); क्या इस विधि को अपनी नीति में कॉल करने की आवश्यकता है? 2. यदि प्रश्न 1 का उत्तर हां है, तो क्या एपिलिस्ट को असाइनमेंट की आवश्यकता है?

शून्यनहीं, टेम्पलेट में कॉल करने के लिए, एपिलिस्ट को असाइनमेंट की आवश्यकता होती है, और फिर से प्रयास करने के लिए फ़ंक्शन लिखने के लिए।