像Django一样,在文件更改时重新启动Go的net/http服务器

21

我正在尝试使用Martini框架,它在Go语言的基本net/http包的基础上添加了一些不错的功能。

但是,我想知道如何像Django一样,在源文件更改时让服务器自动重启。我知道如何监视文件,但不确定如何重新启动同一进程中的服务器。

我猜测需要再次触发http.ListenAndServe,但我感觉它可能不能与已经运行的实例很好地配合。

我需要生成一个子进程/守护程序才能使其工作吗?


你是在谈论源文件(已编译)的更改还是资源?对于前者,您需要一个外部进程来监视您的源代码,因为需要重新编译。对于后者,在开发模式下,Martini似乎提供了最新的资源。 - Dmitri Goldring
3个回答

15
也许您需要 gin?这是由Martini的创建者制作的。

美妙简单。谢谢 :) - user1467267
1
Gin在一个端口启动服务器,但我正在使用mux路由器。这是端口冲突的问题。 - Maykonn
1
Gin不再维护,正如您可以在Github上的各种问题中阅读到的一样,比如在这里:https://github.com/codegangsta/gin/issues/90“该项目已被放弃。” - Wolkenarchitekt
Gin绝不会被抛弃,它的开发仍在进行中。他们经常提交更新。 - kike

14

你可以试试看

Fresh是一个命令行工具,每次你保存Go或模板文件时都会构建并重新启动你的Web应用程序。


1
迄今为止我尝试过的最用户友好的软件包。非常棒的推荐! - J.M. Janzen
这将使Go语言开发变得有趣! - Felipe Valdes
Fresh现在已经不再维护。 - guizo

12
你需要使用一个可以监视目录/文件并运行命令的外部工具。我建议使用用Go编写的reflex

(修改README中的示例):


(修改README中的示例):
# Rerun make whenever a .go file changes
reflex -r '\.go$' ./mymartiniapp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接