当前我在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));
}
})();