首页 > 解决方案 > 不断收到 TimeoutOverflowWarning 数字不适合 32 位有符号整数。超时持续时间设置为 1

问题描述

我正在使用 Snoostorm 来生成我的 reddit 收件箱流。我有两个 Snoowrap 请求者。两者共享相同的 clientId、clientSecret、用户名和密码。我不确定双重请求者是否会混淆程序,但过一段时间我会收到 TimeoutOverflowWarning。

// Configuration File for Snoowrap

// Requiring Snoowrap
const Snoowrap = require('snoowrap');
       

// Snoowrap Init
const snoowrap = new Snoowrap({
    userAgent: process.env.USER_AGENT,
    clientId: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET,
    username: process.env.REDDIT_USER,
    password: process.env.REDDIT_PASS
});

// Snoowrap Config
snoowrap.config({
    requestDelay: 20000,
    warnings: true,
    continueAfterRatelimitError: false,
    retryErrorCodes: [502, 504, 522],
    maxRetryAttempts: 3,
    debug: true
})

module.exports = {
    snoowrap: snoowrap,
    Snoowrap:Snoowrap
}



// Requester file

const snoowrap = require('../config/snoo-config').snoowrap
const Snoowrap = require('../config/snoo-config').Snoowrap
const Snoostorm = require('snoostorm')
const colors = require('colors')

// Need a second client to make requests within the snoostorm, since snoostorm is using the main client to make all the stream requests.
const client = new Snoowrap({
    userAgent: 'process.env.USER_AGENT',
    clientId: process.env.CLIENT_ID,
    clientSecret: process.env.CLIENT_SECRET,
    username: process.env.REDDIT_USER,
    password: process.env.REDDIT_PASS
})

client.config({
    requestDelay: 20000,
    warnings: true,
    continueAfterRatelimitError: false,
    retryErrorCodes: [502, 504, 522],
    maxRetryAttempts: 3,
    debug: true
})


const follow_ApproveMeThread = function (masterSubName, secondarySubName) {

const inbox = new Snoostorm.InboxStream(client, {
    limit: 5
})

// Get the last 30 comments and a stream of the latest incoming.
inbox.on('item', function (comment) {

    if (comment.subreddit_name_prefixed === `r/${masterSubName}`) {
        author = comment.author.name
        console.log('Adding '.blue + 'u/'.green + author.green + ` as contributor to ${secondarySubName}`.blue)

        snoowrap.getSubreddit(secondarySubName).addContributor({
            name: author
        })

    } else {
        console.log(('u/' + comment.author.name + ' attempted to request me from an unauthorized subreddit!').red)
    }

})

}

然后转储发生:

get[调试] 从发送到 https://oauth.reddit.com/message/inbox?raw_json=1&count=9999&limit=5的请求中收到 200 状态码。ratelimitRemaining:568

添加 u/stickRollBot 作为 SecondarySub 的贡献者

post[调试] 从发送到 https://oauth.reddit.com/r/SecondarySub/api/friend?raw_json=1的请求中收到 200 状态码。ratelimitRemaining:567

get[调试] 从发送到 https://oauth.reddit.com/message/inbox?raw_json=1&count=9999&limit=5的请求中收到 200 状态码。ratelimitRemaining:599

get[调试] 从发送到 https://oauth.reddit.com/message/inbox?raw_json=1&count=9999&limit=5的请求中收到 200 状态码。ratelimitRemaining:598

get[调试] 从发送到 https://oauth.reddit.com/message/inbox?raw_json=1&count=9999&limit=5的请求中收到 200 状态码。

getratelimitRemaining: 597 [debug] 从发送到 https://oauth.reddit.com/message/inbox?raw_json=1&count=9999&limit=5的请求中收到 200 状态码 。ratelimitRemaining:596

(node:8728) TimeoutOverflowWarning: 2147489113 不适合 32 位有符号整数。超时持续时间设置为

  1. (node:8728) TimeoutOverflowWarning: 2147509113 不适合 32 位有符号整数。超时持续时间设置为 1。(节点:8728) TimeoutOverflowWarning:2147529109 不适合 32 位有符号整数。超时持续时间设置为 1。

并且整数不断增长,应用程序继续成功获取状态代码为 200 响应的请求,一遍又一遍地耗尽速率限制。

标签: javascriptapihttpreddit

解决方案


我想我可能已经解决了它,因为它从那以后没有崩溃,但是我从Snoostorm.InboxStream 中删除了limit:5。显然它不喜欢我把它当作一个列表来对待?


推荐阅读