牛仔服务器在启动时退出而没有错误

时间:2020-09-17 23:15:18

标签: elixir cowboy

我正在运行一个简单的牛仔服务器。这是我的应用程序文件:

defmodule MyApp.Application do                                                      
  @moduledoc "Application file"                                                    
                                                                                   
  use Application                                                                  
                                                                                   
  def start(_type, _args) do                                                       
    children = [                                                                   
      Plug.Cowboy.child_spec(                                                      
        scheme: :http,                                                             
        plug: MyApp.Web.Endpoint,                                                   
        options: [port: 8000]                                                                                                                                          
      )                                                                            
    ]                                                                              
                                                                                   
    opts = [strategy: :one_for_one, name: MyApp.Supervisor]                         
    IO.puts("Starting...")                                                         
    Supervisor.start_link(children, opts) |> IO.inspect                            
  end                                                                              
end                                                                                

这是我的终点:

defmodule MyApp.Web.Endpoint do                                                     
  @moduledoc """                                                                   
  This is the module responsible for processing incoming requests                  
  """                                                                              
                                                                                   
  use Plug.Router                                                                  
  import Plug.Conn, only: [send_resp: 3]                                           
                                                                                   
  plug(Plug.Logger)                                                                
  plug(:match)                                                                     
  plug(:dispatch)                                                                  
                                                                                   
  get "/ping" do                                                                   
    send_resp(conn, 200, "pong")                                                                                                                                       
  end                                                                              
                                                                                   
end                                                                                

运行mix run后,我看到启动日志(“正在启动...”),但是我的应用程序立即退出,而不是监听连接。如何让它无限期聆听?

1 个答案:

答案 0 :(得分:1)

来自mix run docs

mix run可用于启动当前应用程序依赖项, 应用程序本身,并可以选择在其上下文中运行一些代码。对于 长时间运行的系统,通常是通过--no-halt完成的 选项:

mix run --no-halt
相关问题