Где должна быть определена "Cro Endpoint HTTP"?

Mimosinnet спросил: 13 июня 2018 в 07:20 в: perl6

Консоль показывает это сообщение после запуска 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;
    }
}

Спасибо!

1 ответ

Есть решение
Jonathan Worthington ответил: 13 июня 2018 в 08:57

Средство разработки cro автоматически выбирает свободный порт для каждой конечной точки в каждой службе, которую просят запустить. Когда есть несколько служб, и у них есть ссылки между ними, они также вводят выбранные порты через переменные среды в зависимые службы. Это позволяет настроить набор сервисов, которые могут настраивать порты через переменные среды, а затем cro run назначить порт каждому из них и распространять эту информацию, чтобы службы могли связываться с друг друга.

В сообщении указывается, какой номер порта был выбран автоматически. Однако, поскольку скрипт службы просто переопределяет их, он не имеет никакого эффекта. Чтобы отключить эту функцию и избавиться от сообщения, удалите запись списка конечных точек в файле .cro.yml.

Если вы хотите жестко установить порт в сценарий службы, то, вероятно, проще объявить их с помощью constant, а не с помощью %*ENV.

Mimosinnet ответил: 14 июня 2018 в 07:36
Сообщение исчезло с вашим предложением. Я также отредактировал сообщение (service.pl6), чтобы использовать constant вместо переменных окружения. :) Благодаря! @ Йонатан-Уортингтон

Дополнительное видео по вопросу: Где должна быть определена "Cro Endpoint HTTP"?

Building and Consuming HTTP Services in Perl 6 with Cro - Jonathan Worthington

"Perl6 as a first language" - JJ Merelo

Perl 6 Tutorial