Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Golang应用程序中使用Heroku调度程序附加组件_Heroku_Go_Scheduler - Fatal编程技术网

在Golang应用程序中使用Heroku调度程序附加组件

在Golang应用程序中使用Heroku调度程序附加组件,heroku,go,scheduler,Heroku,Go,Scheduler,我不知道如何将Heroku调度程序插件与Go一起使用 我想定期运行一个单独的Go文件,但我可以找到实现这一点的命令 根据Heroku的doc(),如果应用程序不是Rails应用程序,我应该使用ruby脚本。但是我不知道如何从那里运行Go文件。Heroku调度程序基本上会运行任何终端命令。因此,例如,如果您将脚本编译成名为myscript的可执行文件,您可以简单地将: myscript 在调度程序中,它将执行该命令,从而运行脚本=)不需要ruby。我最终使用了与我的web dyno相同的main

我不知道如何将Heroku调度程序插件与Go一起使用

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


根据Heroku的doc(),如果应用程序不是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\u param”
。这是一个非常粗糙的问题,但我想使用Scheduler插件找到一个解决方案。

典型的模式是执行以下操作:

.
└── cmd
    ├── processX
    │   └── main.go
    └── web
        └── main.go
然后设置为
[“/cmd/…]”
,Heroku将这两个命令编译并安装到bin中,这样就得到了一个
bin/web
和一个
bin/processX
processX
只是一个占位符,无论包含主包的目录名是结果可执行文件的名称)。在上述情况下,
Procfile
会说
web:web
,第一个
web
是进程类型,第二个是可执行文件的名称。您将告诉调度程序运行的作业是
processX


这清楚地划分了职责

为什么不能在web worker中使用worker dyno或后台goroutine?我对调度器很感兴趣,因为它每次都会衍生出一个新的Dyno,具有不同的IP地址等。我也有类似的问题。添加了一个golang.exe,但根据heroku技术支持,它不会在计划程序上运行,因为服务器是linux操作系统。这与bash脚本配合得很好,但我想运行go脚本,go命令似乎无法在heroku服务器上运行。获取状态127。booo.exe显然无法在linux上运行,但我建议改用多个
cmd/
目录。我发布了一个解释这种方法的答案。对于那些不使用
govendo
glide
的人,也可以使用环境变量
GO\u INSTALL\u PACKAGE\u SPEC