Перезапустить Go net/http server при изменении файла, например Django

Я тестирую Martini, который добавляет некоторые полезные функции в пакет Go basic net/http.

Мне было интересно. Как я могу, например, Django, позволить серверу перезагрузиться при изменении исходного файла? Я знаю, как контролировать файл, но я не уверен, как перезапустить сервер в том же процессе.

Я предполагаю снова запустить http.ListenAndServe, но у меня есть ощущение, что он не справляется с уже запущенным экземпляром.

Нужно ли мне запускать подпроцесс/демон для этого?

Ответы

Ответ 1

Может вам понадобится gin?

Сделано создателем Мартини.

Ответ 2

Вы можете попробовать попробовать

Fresh - инструмент командной строки, который создает и (повторно) запускает ваше веб-приложение каждый раз, когда вы сохраняете файл Go или template.

Ответ 3

Вам нужно будет использовать внешний инструмент, который может просматривать каталог/файлы и запускать команду. Я бы рекомендовал reflex, который написан в самом Go:

(изменение примера в README):

# Rerun make whenever a .go file changes
reflex -r '\.go$' ./mymartiniapp