2016-12-07 42 views
2

我创建了一个简单的“bot”,用于解析rss-feed到一些trello卡。PM2开始创建奇怪的文件

我使用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 

和某个时候有了这样的

b0d3e000-bca5-11e6-b57b-fff3b35ba082 b0d3e001-bca5-11e6-b57b-fff3b35ba082 
bot.js node_modules 

文件1+额外的空文件越来越删除了一些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

可能在配置pm2时设置临时文件,如果有任何问题或错误? –

+0

我不知道这个配置应该在哪里......纪录片没有提到这些文件 – Machigatta

+0

你可以添加你用来启动pm2的bot.js的命令吗? – leroydev

回答

1

好吧,我调查了这些文件,现在得到了解决方案。 只是不再使用require('feed-read')

看起来好像创建文件来对它进行编码并在之后进行流式传输。

的主要问题有以下几点:

  • RSS订阅有一个错误的语法
  • 服务器不可用
  • 服务器返回一个数据库错误或东西

如果事情之一上述情况发生后,该文件将不会被删除。有些人是空的。但是我发现了一个返回“DB Error”的vBulletinRss feed。

只需使用请求并自行解析即可。