【问题标题】:Where should "Cro Endpoint HTTP" be defined?应该在哪里定义“Cro Endpoint HTTP”?
【发布时间】:2018-07-07 21:00:29
【问题描述】:

控制台在启动 cro ('cro run') 后显示此消息:

▶ Starting JoanPujol (JoanPujol)
???? **Endpoint HTTP will be at http://localhost:20000/**
???? JoanPujol Listening at http://localhost:3000
???? JoanPujol Shutting down...
♻ Restarting JoanPujol (JoanPujol)
???? JoanPujol Listening at http://localhost:3000

我无法弄清楚“端点 HTTP”的定义位置。这是我的“service.p6”:

use Cro::HTTP::Log::File;
use Cro::HTTP::Server;
use Routes;

constant HOST = 'localhost';
constant PORT = 3000;

my Cro::Service $http = Cro::HTTP::Server.new(
    :http<1.1>,
    host => HOST, 
    port => PORT,
    application => routes(),
    after => [
      Cro::HTTP::Log::File.new(logs => $*OUT, errors => %*ERR)
    ]
);
$http.start;
say "Listening at http://{HOST}:{PORT}";
react {
    whenever signal(SIGINT) {
        say "Shutting down...";
        $http.stop;
        done;
    }
}

谢谢!

【问题讨论】:

    标签: raku cro


    【解决方案1】:

    cro 开发工具会自动为要求运行的每个服务中的每个端点选择一个空闲端口。当有多个服务并且它们之间指定了链接时,它还会通过环境变量将选定的端口注入到依赖的服务中。这使得设置一组服务成为可能,这些服务可以通过环境变量配置其端口,然后让cro run 为每个服务分配一个端口并传播该信息,以便服务可以相互通信。

    消息指示自动选择了哪个端口号。但是,由于服务脚本无论如何都会覆盖这些脚本,因此它没有任何效果。要禁用此功能并删除该消息,remove the endpoint list entry in the .cro.yml file

    如果希望将端口硬编码到服务脚本中,那么使用constant 声明它们可能比使用%*ENV 更容易。

    【讨论】:

    • 该消息随您的建议而消失。我还编辑了帖子 (service.pl6) 以使用 constant 而不是环境变量。 :) 谢谢! @jonathan-worthington
    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2019-06-07
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多