作为尝试自学Node和如何使用Heroku的一种方法,我决定创建一个简单的Twitter机器人,该机器人应该每天发一次推文。
手动运行我的机器人时,一切正常,并按需进行鸣叫。一旦进入Heroku,甚至在我添加调度程序(每天运行一次我的机器人)之前,它就开始在随机时间发推文。我必须继续删除它们。我在日志中注意到,该机器人不断崩溃并重新启动,从而触发了该推文。
我已经在Google上搜索了几个小时,无法弄清为什么会这样。我是Node的新手,并且通常与服务器有关,所以我真的不确定如何从这一点开始进行故障排除。
如果能找出导致我的机器人崩溃的原因,我将不胜感激。
(我应该注意,我确实在Heroku上将其设置为#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char DataMem[32][3];
int RegMem[32][10];
char line[100][21]; //Holds the value for each line in the input file
int i = 0;
int j = 0;
while(fgets(line[i], 20, stdin) != NULL)
{
line[i++];
if(line[i] == " ")
DataMem[j] = line[i];
//printf("%s", line[3]);
}
return 0;
}
,并且位于我的95864312
68957425
-136985475
36547566
24957986
1
45
98
中。不确定这是否有所不同。)
Heroku日志:
worker
Bot源代码: https://github.com/meowwwls/words-of-tori-amos/blob/master/bot.js
Procfile
答案 0 :(得分:0)
已获得Heroku支持!这让我发疯了。我以为如果有人遇到此问题,我会分享支持的答案。我认为我阅读的Twitter机器人教程没有这个问题的原因是,他们所有人的机器人也都在做其他事情,例如响应发送到其机器人的主题标签,关注者或推文。或者他们使用setInterval
进行鸣叫,从而使应用程序持续运行。
我遵循了这个建议,它运行得很好。
两个崩溃的原因是,您没有在工人dynos上运行进程,而是发出了鸣叫并退出的命令,heroku Web和工人dynos旨在处理长时间运行的任务,因此您的worker正在启动,进行鸣叫然后突然退出并崩溃,导致我们检测到崩溃并启动了一个新的worker,它只是在循环中做同样的事情。
如果您只想运行预定的推文,则只需删除Procfile并按比例缩小Web和工作者的dynos,调度程序就会在您计划好调度后立即启动单独的一次性dyno,这将为您运行推文脚本您退出。