当前位置: 首页 > 面试题库 >

在一个go程序中同时运行两个Web服务器

仰城
2023-03-14
问题内容

在go程序中,我想同时运行两个Web服务器,
显然它们将在两个不同的端口(如果需要,还有IP地址)上提供服务,
问题在于调用http.handle,当我尝试为’ /’对于第二台服务器,它会慌张,并说已经有一个与’/’相关联的处理程序,
我想我除了需要之外还需要创建一个多路复用器DefaultServeMux,我尝试使用来实现,gorillaMux但无法弄清楚,

在同一程序/进程中运行两个Web服务器是否存在根本性的错误。

更清楚地说,这两个Web服务器之一是用作常规Web服务器,我需要第二个Web服务器充当RPC服务器,以便在群集的不同节点上运行的程序实例之间进行通讯,

编辑:更清楚一点,这不是实际的代码,但是要点

myMux := http.NewServeMux()
myMux.HandleFunc("/heartbeat", heartBeatHandler)

http.Handle("/", myMux)

server := &http.Server{
    Addr:    ":3400",
    Handler: myMux,
}
go server.ListenAndServe()

gorillaMux := mux.NewRouter()
gorillaMux.HandleFunc("/", indexHandler)
gorillaMux.HandleFunc("/book", bookHandler)

http.Handle("/", gorillaMux)

server := &http.Server{
    Addr:    ":1234",
    Handler: gorillaMux,
}

log.Fatal(server.ListenAndServe())

问题答案:

我认为您只需要删除以下几行:

http.Handle("/", myMux)
http.Handle("/", gorillaMux)

在myMux和gorillaMux中已经定义了所有路由。

检查此:http :
//play.golang.org/p/wqn4CZ01Z6



 类似资料:
  • 问题内容: 如果我有另一个正在运行的apache / web-server实例,我用所有这些命令痛苦地分析了昨天的全部内容 我没有在端口8080上运行的Apache或任何其他服务器的另一个实例。 但是,XAMPP给了我这个: 我该怎么办? 我也将httpd.conf编辑为LISTEN到端口9876,并且仍然相同。 问题答案: 如果: 然后,也许有一个锁定文件位于启动要检查的地方?这些通常在/ va

  • 如果我有另一个apache/web服务器实例在运行,我已经痛苦地分析了昨天的所有内容,包括所有这些命令 我没有在端口8080上运行的Apache或任何其他服务器的另一个实例。 然而,XAMPP给了我这样的信息: 我该怎么办? 我还编辑了httpd.conf监听端口9876,仍然是一样的。

  • 我创建了一个dash应用程序来显示另一个代码正在收集的信息,我希望使用Python中的asyncio模块同时运行这两个应用程序。 我的代码使用异步函数,Dash应用程序(基于Flask)在服务时阻止其他任何东西执行。 我不确定这是否需要打开更多的线程。 这是我当前的代码,它只运行主协程。 如何同时运行main和_dashboard?

  • 我正在尝试调试应用程序的流程。因此在这个过程中,我需要调试两个运行在两个不同tomcat服务器上的应用程序(其中一个应用程序中的方法调用不同应用程序的另一个方法)。我如何在eclipse中实现这一点(可能吗)? 注意:这两个应用程序都在同一个eclipse实例中,没有任何调试配置。

  • 问题内容: 我刚刚发现我可以使用Python编写一个非常简单的Web服务器。我已经有一个Apache Web服务器,我想在这台机器上尝试基于Python的Web服务器。但是,如果尝试尝试,可能会引起某种冲突。我的意思是两个Web服务器将如何“决定”谁需要服务器处理来自客户端的请求? 问题答案: 让他们监听不同的端口,您会没事的。 默认的Web端口是80。当您在浏览器中打开某些网址而不指定端口时,默

  • 我试图制作一个时钟,如果 如何同时运行警告语音和时钟,使时钟在播放警告语音()时不会停止? 语音代码: 时钟代码: