62 lines
1.3 KiB
JavaScript
62 lines
1.3 KiB
JavaScript
const request = require('request');
|
|
|
|
var callRunner = (function(){
|
|
let started = 0;
|
|
let completed = 0;
|
|
let errors = 0;
|
|
let noRunner = 0;
|
|
|
|
let func = function(code, callback) {
|
|
// code | `string` block of code to send runner or
|
|
// `number` sleep timeout in seconds
|
|
let sleepTime = 0;
|
|
let id = started++;
|
|
callback = callback || function(){};
|
|
|
|
if(/^\+?(0|[1-9]\d*)$/.test(code)){
|
|
sleepTime = code;
|
|
code = null;
|
|
}
|
|
console.log(id, ': Running...');
|
|
|
|
|
|
let httpOptions = {
|
|
url: 'http://codeland.bytedev.co:2000/api/run?once=true',
|
|
form: {
|
|
code: code || `python3 -c "
|
|
from time import sleep
|
|
sleep(${sleepTime})
|
|
"`,
|
|
}
|
|
};
|
|
|
|
return request.post(httpOptions, function(error, response, body){
|
|
completed++;
|
|
let res = ``;
|
|
if(response.statusCode == 503){
|
|
noRunner++;
|
|
}else if(error || response.statusCode !== 200){
|
|
errors++;
|
|
body = JSON.parse(body);
|
|
res = (Buffer.from(body.res, 'base64').toString('ascii'));
|
|
}
|
|
console.log(`${id} with results ${res}. Errors ${errors}. No runner ${noRunner}. Completed ${completed}`);
|
|
|
|
callback()
|
|
|
|
});
|
|
};
|
|
|
|
return func;
|
|
})();
|
|
|
|
|
|
let __do = function(till){
|
|
if(!till) return ;
|
|
|
|
callRunner(String(Math.random())[3]);
|
|
setTimeout(__do, 1500, --till);
|
|
};
|
|
|
|
__do(30)
|