Closed MatthewPattell closed 4 years ago
или еще что?
Нужно переиспользовать соединение (обычно оно закрыватеся после запроса).
Пример: запрос/клиент:
curl localhost:8001/test -d '{"text": "hello"}'
воркер:
let http = require('http');
let request = require('request');
var myAgent = new http.Agent({
keepAlive: true,
maxSockets: 1
//keepAliveMsecs: 3000
});
function processResponse(err, res, data) {
if(err) {console.error(err); return;}
console.log('request:', data);
data.text += ' world!';
sendResponse(data);
}
// send result and get next task
function sendResponse(response) {
request.post({url:'http://localhost:8001/', agent: myAgent, json: response}, processResponse);
};
// register a worker and get first task
request.post({url:'http://localhost:8001/test', agent: myAgent, json: true, headers: {type: 'worker'}}, processResponse);
@lega911 Да, спасибо. Нужно было http.Agent добавить и включить keepAlive. Думаю в документацию добавить следовало бы. Неочевидно.
Опять же есть пример на python:
Что происходит здесь? Чтобы можно было воспроизвести на других языках. Конструкции requests.Session() нет например в nodejs. Там заголовки устанавливаются или куки или еще что? Постоянно получаю 503 Service Unavailable после того как получил задачу и пытаюсь вернуть ответ.