在 Golang 应用程序中使用 Heroku Scheduler 附加组件
Using Heroku Scheduler add-on with Golang app
我不知道如何在 Go 中使用 Heroku Scheduler 插件。
我想要 运行 定期生成一个单独的 Go 文件,但我可以找到实现它的命令。
来自 Heroku 的文档 (https://devcenter.heroku.com/articles/scheduler),如果该应用不是 Rails 应用,我应该使用 ruby 脚本。但是我不知道如何从那里 运行 Go 文件。
Heroku 调度程序基本上 运行 任何终端命令。因此,如果您将脚本编译成一个名为 myscript
的可执行文件,例如,您可以简单地输入:
myscript
在调度程序中,它将执行该命令,从而 运行 设置您的脚本 =) 不需要 ruby。
我最终分叉了我的 web 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 插件的解决方案。
典型的模式是做类似的事情:
.
└── cmd
├── processX
│ └── main.go
└── web
└── main.go
然后你将 heroku.install 设置为 ["./cmd/..."]
并且 Heroku 将这两个命令编译并安装到 bin 中,所以你得到一个 bin/web
和一个 bin/processX
(processX
只是一个占位符,无论包含主包的目录名称是生成的可执行文件的名称)。在上述情况下,您的 Procfile
会说 web: web
,第一个 web
是进程类型,第二个是可执行文件的名称。你告诉调度程序 运行 的工作是 processX
.
明确划分职责
我不知道如何在 Go 中使用 Heroku Scheduler 插件。
我想要 运行 定期生成一个单独的 Go 文件,但我可以找到实现它的命令。
来自 Heroku 的文档 (https://devcenter.heroku.com/articles/scheduler),如果该应用不是 Rails 应用,我应该使用 ruby 脚本。但是我不知道如何从那里 运行 Go 文件。
Heroku 调度程序基本上 运行 任何终端命令。因此,如果您将脚本编译成一个名为 myscript
的可执行文件,例如,您可以简单地输入:
myscript
在调度程序中,它将执行该命令,从而 运行 设置您的脚本 =) 不需要 ruby。
我最终分叉了我的 web 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 插件的解决方案。
典型的模式是做类似的事情:
.
└── cmd
├── processX
│ └── main.go
└── web
└── main.go
然后你将 heroku.install 设置为 ["./cmd/..."]
并且 Heroku 将这两个命令编译并安装到 bin 中,所以你得到一个 bin/web
和一个 bin/processX
(processX
只是一个占位符,无论包含主包的目录名称是生成的可执行文件的名称)。在上述情况下,您的 Procfile
会说 web: web
,第一个 web
是进程类型,第二个是可执行文件的名称。你告诉调度程序 运行 的工作是 processX
.
明确划分职责