Как обеспечить «разогрев» API перед первым запросом? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть приложение xamarin для Android, которое отправляет запросы в API, размещенные в ядре .net (в IIS на Windows Server). Первоначальные запросы ВСЕГДА занимают много времени для загрузки (предположительно, из-за некоторого процесса прогрева). Как я могу гарантировать, что API будет готов к тому времени, когда пользователь должен будет сделать запрос?

Я просто делаю быстрые асинхронные запросы get / post при запуске приложения? Это кажется неэффективным ...

1 Ответ

2 голосов
/ 06 марта 2019

Вам необходимо использовать проверку работоспособности для своего API:

public class ExampleHealthCheck : IHealthCheck
{
    public ExampleHealthCheck()
    {
        // Use dependency injection (DI) to supply any required services to the
        // "warmed up" check.
    }

    public Task<HealthCheckResult> CheckHealthAsync(
    HealthCheckContext context, 
         CancellationToken cancellationToken = default(CancellationToken))
    {
        // Execute "warmed up" check logic here.

        var healthCheckResultHealthy = true;

        if (healthCheckResultHealthy)
        {
            return Task.FromResult(
            HealthCheckResult.Healthy("The check indicates a healthy result."));
        }

        return Task.FromResult(
        HealthCheckResult.Unhealthy("The check indicates an unhealthy result."));
    }
}

Добавить свою службу в службы проверки работоспособности:

public void ConfigureServices(IServiceCollection services)
{
    services.AddHealthChecks()
        .AddCheck<ExampleHealthCheck>("example_health_check");
}

В Startup.Configure вызвать UseHealthChecks в конвейере обработкис URL-адресом конечной точки:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseHealthChecks("/health");
}

Ссылка на документацию: https://docs.microsoft.com/ru-ru/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-2.2

...