我正在运行这个例子。而且它是有效的。然而,如果我运行另一个实例,我预计它会崩溃并引发异常,但没有。预期的异常应该是类似于“端口3000已在使用中”,这是当你在不同的终端运行两个python -m SimpleHTTPServer 8000时类似的错误。
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Data.Monoid (mconcat)
main = scotty 3000 $
get "/:word" $ do
beam <- param "word"
html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]发布于 2018-05-12 05:53:30
这是因为scotty使用的Data.Streaming.Network库(好吧,通过warp,由scotty使用)获取了一个跨越IPv4和IPv6的可能地址列表,然后尝试绑定到每个地址上的端口,一次一个,丢弃任何IO异常。
在端口3000上有两个scotty实例,我看到:
% netstat -an | grep 3000
tcp46 0 0 *.3000 *.* LISTEN
tcp4 0 0 *.3000 *.* LISTEN尝试我看到的第三个scotty实例:
% ./x
Setting phasers to stun... (port 3000) (ctrl-c to quit)
x: Network.Socket.bind: resource busy (Address already in use)https://stackoverflow.com/questions/50300481
复制相似问题