Ali*_*Ali 49 scheduler heroku node.js
实际上没有关于在Node.js中使用Heroku Scheduler的教程.假设我有一个名为sayHello()的函数,我想每10分钟运行一次.我怎样才能在控制器中使用它.在ruby中你写了rake function_name()但是没有解释Node.我可以写'/ sayHello'或者我应该做额外的配置吗?
小智 82
创建文件<project_root>/bin/say_hello
:
#! /app/bin/node
function sayHello() {
console.log('Hello');
}
sayHello();
process.exit();
Run Code Online (Sandbox Code Playgroud)
部署到Heroku并测试它,$ heroku run say_hello
然后将其添加到具有任务名称的调度程序say_hello
.
以say_hello.js
您通常使用的Node.js脚本为例$ node say_hello.js
.
把它变成一个脚本
.js
结尾#! /app/bin/node
[1] [2] bin
目录[3][1]阅读维基百科上的shebang.
[2] node
可执行文件安装在app/bin/node
Heroku上.您可以通过登录Heroku上的bash $ heroku run bash
然后询问来查看它$ which node
.
[3] Heroku要求将脚本放在bin
目录中.请参阅Heroku开发人员中心中的定义任务.
我同意用于调度任务的Heroku文档对于Ruby脚本以外的任何内容都不是很清楚.经过一些试验和错误,我设法解决了这个问题.我希望这有帮助.
Chr*_*dal 39
更好的方法是定义您的计划文件,例如worker.js
使用以下内容:
function sayHello() {
console.log('Hello');
}
sayHello();
Run Code Online (Sandbox Code Playgroud)
然后在heroku时间表中,你node worker
就像你在Procfile
那里定义它一样写出来!
Cla*_*fou 23
Christophe的答案对我有用,直到我需要将参数传递给脚本,此时它失败了.问题是node
不应该在任务中指定.以下是如何使其正常工作:
在Procfile中,为脚本定义进程类型.请参阅下面的典型Procfile与Web进程,并且,对于运行"scheduled_job.js",第二个进程类型富有想象力地命名为"worker".
Run Code Online (Sandbox Code Playgroud)web: node app.js worker: node scheduled_job.js
在Heroku调度程序的"任务"列中,只需输入带或不带参数的进程类型名称(本例中为"worker").不要在它之前输入'node'.Heroku在它前面显示一个美元符号,因此有效设置的示例将是$ worker
(不带参数运行)或$ worker 123 abc
(执行带参数"123"和"abc"的scheduled_job.js)
我很困惑没有人尝试过:
$ heroku run node yourScript.js
Run Code Online (Sandbox Code Playgroud)
所以把它放在 Heroku Scheduler 中
node yourScript.js
Run Code Online (Sandbox Code Playgroud)
为我工作。
PS:请确保import
您的脚本需要的一切。
以下步骤适用于我的情况。
worker.js
文件。
function sayHello() {
console.log('Hello');
}
sayHello();
这里有一些应该注意的
heroku run node worker.js
用来检查它是否工作。它应该在您的终端中显示“你好”。 归档时间: |
|
查看次数: |
12565 次 |
最近记录: |