Tag: 超时

如何重复“请求”,直到成功? 的NodeJS

我在StackOverflow中检查了一些线程,但没有为我工作。 我有这个请求调用,我需要它尝试发送请求,直到它成功(但如果失败,它必须等待至less3秒): sortingKeywords.sortVerifiedPhrase = function(phrase) { var URL = "an API URL"+phrase; //<== Obviously that in my program it has an actual API URL request(URL, function(error, response, body) { if(!error && response.statusCode == 200) { var keyword = JSON.parse(body); if(sortingKeywords.isKeyMeetRequirements(keyword)){ //Check if the data is up to a certain criteria sortingKeywords.addKeyToKeywordsCollection(keyword); //Adding to the DB […]

Node.js中的http.request超时callback

目前我使用下面的代码来处理超时: var request = http.request(options); request.setTimeout(30000, function(){ //when timeout, this callback will be called }); request.on('error', function(e){ //on error when request, this callback will be called }); 问题是,当删除服务器的响应和超时时间较慢时,有时会调用超时callback,有时会调用超时callback和错误callback (错误callback中的错误是ECONNRESET – 连接重置) 如果代码调用这两个callback函数,它会打破我的代码的逻辑,我如何保证只有一个callback将被称为超时情况? 非常感谢

Node.js:很长的延迟

有一个事件之后,我的服务器反馈。 事件发生后一个小时,我必须发一个信息。 我可以使用setTimeout()但它似乎不会好。 也许这会更好,如果我启动的cron将检查从数据库中的事件的状态(如每分钟) 有谁知道执行这么长时间的拖延有更好的select吗?

连续的RequestError:SqlContext错误。 步骤“GetData”失败:“超时:请求在15000ms内未能完成

我正尝试从节点服务器使用系列文件在我的SQL数据库上运行存储过程。 但是我得到follwoing错误,我不知道为什么。 我真的很感激你的帮助。 错误:{[RequestError:SqlContext错误。 失败的步骤“GetData”:“超时:请求未能完成我15000ms”]名称:'RequestError',消息:'SqlContext错误。 失败的步骤“GetData”:“超时请求未能在15000ms内完成”,代码:'ETIMEOUT',号码:'ETIMEOUT',lineNumber:undefined,状态:undefined,class:undefined,serverName:undefined,procName:undefined ,beforeErrors:[],step:'GetData'} 这是我的代码: var sql = require( "seriate" ); var connection = { name: "example-1", user: "user", password: "pass", host: "host_ip", database: "Test" }; exports.getDataSql = function(req, res) { var results = {}; sql.execute( connection, { procedure: "GetData", params: { Name: { type: sql.NVARCHAR(50), val: "user2" }, LName: { type: […]

摩卡,CoffeeScript,ZombieJS,Tim​​out?

我遇到了一个奇怪的问题,我不知道为什么这样做。 我使用express-coffeescript作为框架,用于testing的应用程序,chai和zombiejs的mochatesting。 request = require 'request' Browser = require 'zombie' assert = require 'assert' chai = require 'chai' should = require 'should' expect = chai.expect chai.should browser = new Browser() describe 'GET /login', -> it 'should login a user successfully', (done) -> browser.on "error", -> console.log "Error" browser.visit "http://localhost/test-laravel/public/login", (browser), -> browser.fill "username", "TheHydroImpulse" browser.fill […]

如何防止在使用hapi.js reply()。hold()时重新加载脚本?

我刚开始使用hapi.js,并在尝试推迟路由响应时遇到问题。 我使用这段代码成功推迟了/query路由的响应: server.route([{ method: 'GET', path: '/query', config: { handler: function(request, reply) { var response = reply().hold(); db = request.server.plugins['hapi-mongodb'].db; someFxn(callbackFxn, request, response); } } }]); var someFxn(cb, req, res){ var raw = {}; //… do lots of stuff that can take a long time cb(req, res, raw); } var callbackFxn = function(request, response, data){ […]

事件循环为空或在超时后退出Node.js进程

我有一个Node应用程序做一些asynchronous的事情,我不能冒险的事情,许多模块之一做坏事,卡住,所以应用程序将永远不会退出。 (这只是在发送日志消息到服务时发生的。) 我不能直接使用process.exit ,因为无论有多less个asynchronous操作挂起,它都会终止。 尽pipe如此,我想尽快退出,所以这不会: function exit() { setTimeout(function() { process.exit(1); }, 10000); } 因为这将等待10秒,即使一切正常,1秒后所有的asynchronous事件结束。 我正在考虑检查如果事件循环是空的,除了这个计时器,然后退出。 这可能是通过一些无证的stream程方法来完成的,但是我更喜欢避免这样的黑幕。 任何想法更好的方法来解决这个问题?

如何使一个NodeJs函数等待?

例如,我有这两个function: var count= function(){ for(i=1;i<=3;i++){ console.log(i); } setTimeout(function(){ for(i=1;i<=3;i++){ console.log(-i); } },2000); } var letters = function(){ var charSet = 'abcdefghijklmnopqrstuvvwxyz' for(i=0;i<3;i++){ console.log(charSet[i]); } } 当我按这个顺序执行它们时: count(); letters(); 我期望得到输出: 1 2 3 -1 -2 -3 abc 但是我得到的是: 1 2 3 abc -1 -2 -3 为什么函数不等待超时结束? 我怎样才能达到预期的行为?

是否有可能在Sinatra / Synchrony中模拟JS的setTimeout?

我可能正在寻找替代node.js – 一些非常好的事情是setTimeout()和setInterval()。 我发现Sinatra有一个名为Synchrony的插件 ,看起来像我可能实际使用的东西。 只是做一个新的线程,并做一个忙碌的东西或什么是合理的?

避免Oriento查询超时(OrientDB的node.js驱动程序)

鉴于下面的node.js + oriento示例代码,我有一个运行到超时的问题, [OrientDB.ConnectionError [2]: read ETIMEDOUT] ,第一次在长时间不活动期间后进行数据库查询。 超时错误后,连接以某种方式重新初始化,下一个查询运行良好。 var oriento = require("oriento"), server = oriento({…}), db = server.use("users"); var getData = function(statement, opts, callback) { db.query(statement, opts).then(function(data) { callback(null, data); }).catch(callback); }; 所以我有以下问题: 这是正确的方法,或者我应该调用oriento({…}).use("users")每次我做一个查询,而不是重用连接对象? 如果这是正确的方法,为什么连接不被validation和自动刷新? 我怎么手动检查,我不会进入超时(即validation连接),并强制连接刷新?