2016-08-26 2 views
2

Я не могу понять, как использовать дополнение к планировщику Heroku Scheduler с Go.Использование дополнения Heroku Scheduler с приложением Golang

Я хотел бы периодически запускать отдельный файл Go, но я могу найти команду для достижения этой цели.

Из документа Heroku (https://devcenter.heroku.com/articles/scheduler), если приложение не является Rails-приложением, я должен использовать рубиновый скрипт. Но я не знаю, как запустить файл Go оттуда.

+0

Почему не рабочий дино или фон goroutine в вашем веб-работника? https://devcenter.heroku.com/articles/background-jobs-queueing – elithrar

+1

Меня интересует Планировщик, потому что он каждый раз разворачивает новый Dyno с различным IP-адресом и т. д. –

+0

iam имеет аналогичную проблему. добавлен golang .exe, но он не будет запускаться в планировщике в соответствии с технической поддержкой heroku из-за того, что серверы являются linux os. –

ответ

3

Я в конечном итоге разветвление же 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. 
    } 
} 

Затем в планировщике надстройки, я просто называю: my-app-name "my_job_param". Это довольно хаки, но я хотел найти решение, используя дополнение Scheduler.

+1

Это работает, но я предлагаю использовать несколько '' cmd/'каталогов. Я отправил ответ, который объясняет этот подход. – freeformz

0

Планировщик Heroku будет запускать любую команду терминала в основном. Итак, если вы скомпилировать скрипт в исполняемый файл под названием myscript, например, вы могли бы просто поставить:

myscript 

В планировщику и он будет выполнять эту команду, таким образом, работает скрипт =) не требуется рубин.

+0

Это хорошо работает с скриптом bash, но я хотел запустить скрипт go, и команды go не работают на сервере Heroku. –

+0

Получение статуса 127. booo –

+0

.exe не работает на linux, очевидно –

2

Типичная картина сделать что-то вроде:

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

И вы установили heroku.install в ["./cmd/..."] и Heroku компилирует и устанавливает обе команды в бункер, так что вы получите bin/web и bin/processX (processX просто заполнителем , независимо от имени каталога, содержащего основной пакет, это имя получаемого исполняемого файла). В приведенном выше случае ваш Procfile скажет web: web, первый web - тип процесса, второй - имя исполняемого файла. И задание, которое вы указали планировщику для запуска, будет processX.

Это чисто разделяет обязанности

+0

Для тех, кто не использует 'govendor' или' glide', это также можно установить с помощью переменной среды 'GO_INSTALL_PACKAGE_SPEC' – m90

Смежные вопросы