我创建了一个简单的“bot”,用于将rss-feed解析为一些trello-cards。
我正在使用pm2来启动和维护bot.js
由于一些奇怪的原因,cliframework创建了一些奇怪的文件。
尽量让情况尽可能清楚:
pm2 list
返回
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ bot │ 0 │ fork │ 25084 │ online │ 0 │ 3m │ 0% │ 67.7 MB │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
有时如果我正在使用
ls
命令正在返回
bot.js node_modules
有时会返回1 +以上的其他空文件
b0d3e000-bca5-11e6-b57b-fff3b35ba082 b0d3e001-bca5-11e6-b57b-fff3b35ba082
bot.js node_modules
文件随后被删除了一些secons,并在几秒钟之后用不同的名字创建
这是主要问题:
这个机器人运行了3个星期而我缺席并且在重启计数器上有一个3127(为什么这么多... idk)但是每次重启都有一个这样的文件...我不得不删除3127个文件..只是因为pm2正在创建一些奇怪的文件..
是否还列出了其他类似问题..或者您是否知道可能的解决方法或解释?
编辑:我刚刚意识到这些文件不是通过重新启动创建的..因为它们现在没有重启计数器> 0
只是为了确保代码细分:
var feed = require('feed-read');
var http = require('http');
var async = require('async');
var request = require('request');
var utf8 = require('utf8');
var sprintf = require('sprintf-js').sprintf;
var UNABLE_TO_CONNECT = "Unable to connect.";
var CURFEED = "";
var PUBDATE = new Array();
var FEEDS = new Array();
FEEDS["TEST"] = "http://lorem-rss.herokuapp.com/feed?unit=second&interval=4"; //test
var LISTID = new Array();
LISTID["TEST"] = "TRELLO_COLUMN";
var Trello = require("node-trello");
var t = new Trello("", "");
(function() {
var timeout = setInterval(function() {
async.parallel([ function(callback) {
CURFEED = "TEST";
feedMe(CURFEED);
// TODO: where to call callback()?
} ], function done(err, results) {
console.log("Done");
if (err) {
throw err;
}
});
}, 1000);
})();
function feedMe(feedName){
if(FEEDS[feedName] == "" || FEEDS[feedName] == undefined){
return;
}
feed(FEEDS[feedName], "ISO-8859-16", function(err, articles) {
// console.log("------------------------- " + FEEDS[feedName]);
if (err) {
// html.push("<p>", UNABLE_TO_CONNECT = "</p>");
console.log(UNABLE_TO_CONNECT);
} else {
var updated = false;
var newArticle = new Array();
articles.forEach(function(entry) {
var merkDate = new Date(entry.published);
var oldDate = new Date(PUBDATE[feedName]);
if(PUBDATE[feedName] == "" || PUBDATE[feedName] == undefined){
PUBDATE[feedName] = merkDate;
}
if(oldDate.getTime() < merkDate.getTime()){
updated = true;
newArticle.push(entry);
}
});
if(newArticle.length > 0){
for (var i = newArticle.length - 1; i >= 0; i--) {
var entry = newArticle[i];
console.log(sprintf("----------------------------------------------------------"));
console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Checking"));
console.log(sprintf("---%1$s %2$s: %3$s", "Entry-Name", "", entry.title));
console.log(sprintf("----%1$s %2$s: %3$s", "Link-Name", "", entry.link));
console.log(sprintf("--%1$s %2$s: %3$s", "Create-Date", "", entry.published));
console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Creating-Trello-Card"));
t.post("/1/lists/"+LISTID[feedName]+"/cards", {name: entry.title, desc: entry.link} , function(err, data){
t.put("/1/cards/"+data.id+"/pos", {value: 0}, function(err, data){
});
});
console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Trello-Card fully created"));
console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Closing"));
}
}
if(updated == true){
PUBDATE[feedName] = new Date();
}
}
});
}
答案 0 :(得分:1)
好的,我调查了文件并立即获得了解决方案。
不要再使用require('feed-read')
了。
似乎要创建文件来对其进行编码并在之后对其进行流式传输。
主要问题如下:
如果出现上述情况之一,则之后不会删除该文件。有些人是空的。但是我发现了一个vBulletinRss提要,它返回了&#34; DB Error&#34;。
要对此进行舍入,只需使用请求并自行解析。