使用Heroku Scheduler附加组件与Golang应用程序

时间:2016-08-26 18:12:59

标签: heroku go scheduler

我无法弄清楚如何使用Go的Heroku Scheduler插件。

我想定期运行一个单独的Go文件,但我可以找到实现它的命令。

来自Heroku的doc(https://devcenter.heroku.com/articles/scheduler),如果应用程序不是Rails应用程序,我应该使用ruby脚本。但我不知道如何从那里运行Go文件。

3 个答案:

答案 0 :(得分:4)

我最终分配了我的网络dyno所使用的main函数:

func main () {
    if len(os.Args) >= 2 && os.Args[1] == "my_job_param" {
       // Execute job.
    } else {
       // Set up my web server with port, router, etc.
    }
}

然后,在Scheduler插件中,我只需调用:my-app-name "my_job_param"。这很糟糕,但我想找到一个使用Scheduler插件的解决方案。

答案 1 :(得分:2)

典型的模式是做类似的事情:

.
└── cmd
    ├── processX
    │   └── main.go
    └── web
        └── main.go

然后将heroku.install设置为["./cmd/..."],Heroku编译并将两个命令安装到bin中,这样您就可以获得bin/webbin/processXprocessX只是一个占位符,无论包含主包的目录的名称是生成的可执行文件的名称。在上述情况下,您的Procfile会说web: web,第一个web是流程类型,第二个是可执行文件的名称。你告诉调度程序运行的工作是processX

清楚地分离职责

答案 2 :(得分:0)

Heroku调度程序基本上会运行任何终端命令。因此,例如,如果将脚本编译为名为myscript的可执行文件,则只需输入:

即可
myscript

在调度程序中,它将执行该命令,从而运行您的脚本=)不需要ruby。