Можно ли выполнить код до того, как рабочий процесс будет вынужден закрыться на время ожидания для отправки вывода подключенным клиентам?

Я использую Mojolicious (полный, а не облегченный) с hypnotoad для предоставления внутреннего API.

Я искал способ отправить некоторый вывод в соединения, которые будут закрыты по истечении времени ожидания работника.

Целью будет возможность уведомить клиентов о том, что работник остановлен.

Я пробовал деструктор, блок END и обработку сигналов STOP, QUIT и т. д. внутри контроллера, но безуспешно (я думаю, что когда рабочий умирает, уже слишком поздно).

Итак, я попробовал использовать следующий код, и хотя я могу видеть, когда рабочий процесс остановлен, я не знаю, как отправить какой-либо вывод из этих перехватчиков.

      package MyApi;
use Mojo::Base 'Mojolicious', -signatures;
use Mojo::Server::Hypnotoad;

# This method will run once at server start
sub startup ($self) {
    # Load configuration from config file
    my $config = $self->plugin('NotYAMLConfig');

    # Configure the application
    $self->secrets($config->{secrets});

    $self->hook(before_server_start => sub ($server, $app) {

        $server->on(reap => sub ($prefork, $pid) {
                                print "Closing worker $pid on reap event\n";
                            });

        $server->ioloop->on(finish => sub {
            my $loop = shift;
            print "Closing worker $$ on finish event\n";
        });
    });


    $self->app->config(hypnotoad => {
        listen => ['http://*:2003'], 
        workers => $ENV{HYPNOTOAD_WORKERS} // 10,
        inactivity_timeout =>  40,  
        heartbeat_timeout  =>  40, 
        heartbeat_interval =>   5, 
        graceful_timeout   =>   5, 
        clients => 1, # 1 worker 1 client
        accepts => 200
    });

    # Load the "api_nationals.yml" specification
    $self->plugin(
        "OpenAPI" => {
            url => $self->home->rel_file("api_nationals.yml")
        }
    );

}

Любая идея или предложение приветствуются.

0 ответов

Другие вопросы по тегам