я все время нуждаюсь в загрузке страницы с гипнозом - PullRequest
2 голосов
/ 23 апреля 2019

В моем проекте Mojolicious есть одна страница, которая загружается правильно, но затем соединения не завершаются, пока не наступит время ожидания.

У меня проблема только с hypnotoad на рабочем сервере.

Я не смог воспроизвести проблему при разработке.

Я однажды занимался расследованием проблемы из-за того, что делала страница, и запрос API для внешней службы.

Изначально я думал, что это связано с некоторой проблемой Mojo :: UserAgent, и я пробовал несколько комбинаций Promise и IOLoop, и все работали.

упрощенный код:

sub show {
    my $s = shift;

    my $customer = Model::Customers->new();
    $customer->id( $s->session('id') );
    $customer->get();

    my $subscription = Model::Customers::Subscriptions->new();
    $subscription->id( $s->session('id') );
    $subscription->get();

    my $plan = Model::Plans->new();
    $plan->id( $subscription->idPlan );
    $plan->get;


    $s->stash(
        namePlan => $plan->name,
        monthDuration => $plan->monthDuration,
        amount => $plan->amount,
        end => $subscription->end,
        status => $subscription->status,
        signupDate => $customer->signupDate,
        endTrial => $customer->endTrial,
        diffTrial => $customer->diffTrial,
        trialDays => $customer->trialDays,
        startSubscription => $subscription->start,
        discount => $plan->discount,
        newsletter => $newsletter,
    );

    $s->render();

}

Я не делюсь кодом шаблона, потому что в этом нет необходимости.

Страница и шаблон загружаются правильно, но браузер chrome загружается до тех пор, пока не истечет время ожидания. (По умолчанию 15 с)

1 Ответ

2 голосов
/ 23 апреля 2019

Причиной проблемы является то, что я использовал зарезервированное слово «status».

Решение - изменить имя переменной в тайнике и в шаблоне:

   $s->stash(
        namePlan => $plan->name,
        monthDuration => $plan->monthDuration,
        amount => $plan->amount,
        end => $subscription->end,

        subStatus => $subscription->status,

        signupDate => $customer->signupDate,
        endTrial => $customer->endTrial,
        diffTrial => $customer->diffTrial,
        trialDays => $customer->trialDays,
        startSubscription => $subscription->start,
        discount => $plan->discount,
        newsletter => $newsletter,
    );
...