我在node中编写了一个Twitter机器人,它转发了一些搜索返回的推文。我将其与Webpack捆绑在一起,并使用AWS Lambda进行了部署。我已将cloudWatch事件设置为每小时触发一次该功能。 我已经记录了该函数的开始和结束,以及每次该函数成功/未成功转发时都记录了日志。
当我在本地运行它时,它可以工作。当我在Lambda管理控制台上对其进行测试时,它可以工作。但是,在我的CloudWatch Logs中,开始日志和结束日志之间没有很长时间。有趣的是,如果我将事件触发的速率降低到<5分钟,它将再次起作用。我很困惑知道我该如何解决此问题吗?
这是测试日志。该功能可以正常工作。
START RequestId: 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Version: $LATEST
2019-01-23T18:18:42.111Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Start
2019-01-23T18:18:42.312Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Error retweeting
2019-01-23T18:18:42.312Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 You have already retweeted this Tweet.
2019-01-23T18:18:42.352Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Error retweeting
2019-01-23T18:18:42.352Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 You have already retweeted this Tweet.
2019-01-23T18:18:42.352Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Error retweeting
2019-01-23T18:18:42.352Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 You have already retweeted this Tweet.
2019-01-23T18:18:42.352Z 8f2a4423-5aca-447e-9d24-a18b8c5ff510 End
END RequestId: 8f2a4423-5aca-447e-9d24-a18b8c5ff510
REPORT RequestId: 8f2a4423-5aca-447e-9d24-a18b8c5ff510 Duration: 881.20 ms Billed Duration: 900 ms Memory Size: 128 MB Max Memory Used: 64 MB
这是我的代码。
const learnInPublicRetweet = async () => {
const query = '#SomeHashtag';
const params = {
q: query,
result_type: 'recent',
lang: 'en'
};
console.log('Start');
let data = await T.get('search/tweets', params);
const { statuses } = data.data;
statuses.forEach(async ({ id_str: id, user }) => {
if (user.id_str !== '1032750379597946880') {
try {
await T.post('statuses/retweet/:id', { id });
console.log(`Retweeted tweet with id ${id}`);
} catch (err) {
console.log('Error retweeting');
console.log(err.message);
}
}
});
console.log('End');
};
exports.retweet = learnInPublicRetweet;
这是我的cloudwatch日志
16:44:13 START RequestId: 34df836d-c9b3-4b9a-9547-8f3be7ed5297 Version: $LATEST
16:44:14 2019-01-23T16:44:14.159Z 34df836d-c9b3-4b9a-9547-8f3be7ed5297 Start
16:44:14 2019-01-23T16:44:14.938Z 34df836d-c9b3-4b9a-9547-8f3be7ed5297 End
16:44:14 END RequestId: 34df836d-c9b3-4b9a-9547-8f3be7ed5297
答案 0 :(得分:0)
您的代码中可能有几处错误。
全局变量缓存,有关best practices的更多信息
尝试更改它:async function learnInPublicRetweet() { ... }
您正在使用forEach循环,我确定它不适用于异步调用。它将触发所有异步调用并立即返回。如果要遍历对象的可枚举属性,则需要使用for .. of
或for .. in
。