如何在运行脚本之前等待Redis更新

时间:2020-07-16 12:19:47

标签: javascript node.js redis

当前我在AWS上配置了2个实例,两个实例都将/将运行完全相同的脚本(每秒获取第三方API),但是一个小时左右,因此IP被阻止并且在30分钟内未被取消阻止

我正在寻找一种可以运行服务器/实例1 的方法,而服务器/实例2 保持“等待”状态,直到标记/更新开始了;这将是服务器/实例1 更新SHARED redis数据库之后的情况。如果服务器/实例2 被阻止,我将更新数据库,并且服务器/实例2 将再次启动,而服务器/实例2 返回进入“等待”模式

我的脚本基本上就是这样:

const instanceId = 1;
const asyncRedis = require("async-redis");
const client = asyncRedis.createClient({
    'host': process.env.REDIS_HOST,
    'port': process.env.REDIS_PORT
});

(async () => {

    let finished = false;
    while (!finished) {

        let response;

        try {
            response = await request({
                url: 'http://website.com/api',
                method: 'GET',
                jar: cj,
                headers: {
                    'sec-fetch-dest': 'document',
                    'sec-fetch-mode': 'navigate',
                    'sec-fetch-site': 'none',
                    'upgrade-insecure-requests': '1',
                    'cache-control': 'no-cache',
                    'user-agent': '(Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
                },
                json: true,
                resolveWithFullResponse: true
            })
        } catch (error) {
            
            finished = true;
            //here I want to trigger the alternative server/instance to start running, and put this script into 'waiting' mode

        }

        await new Promise(r => setTimeout(r, 1000)); 

    }

})();

0 个答案:

没有答案