AspNetCore 3.1 Web API serverless - как управлять отложенной инициализацией соединения - PullRequest
0 голосов
/ 25 мая 2020

Я создаю бессерверное лямбда-приложение AspNetCore 3.1 Web API.

Мне сообщили, что инициализация соединений (например: соединение Redis) должна выполняться вне обработчика функций. Это сделано для лучшего использования пула соединений.

Azure команда также предложила то же самое: https://docs.microsoft.com/en-us/azure/azure-cache-for-redis/cache-dotnet-core-quickstart

Я с нетерпением жду возможности увидеть, как мы можем добиться этого при использовании Amazon.Lambda.AspNetCoreServer

https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.AspNetCoreServer#bootstrapping -application-iwebhostbuilder-vs-ihostbuilder

Ответ или любой другой указатель для решения проблемы: высоко оценен.

1 Ответ

1 голос
/ 25 мая 2020

Так вот, например.

namespace blankCsharp
{
  public class Function
  {
    private static RedisClient redisClient; <<

    static Function() {
      initialize();
    }

    static async void initialize() {
      AWSSDKHandler.RegisterXRayForAllServices();
      redisClient = new RedisClient('1.2.3.4', 6379, 'username', 'password'); << initialised and reusable between invocations.
      await callLambda();
    }

    public async Task<AccountUsage> FunctionHandler(SQSEvent invocationEvent, ILambdaContext context)
    {
      return redisClient.get('dhddhdhdud')
    }
  }
}

Я считаю, что это то, чего вы пытаетесь достичь. Установив его в разделе инициализации, он должен иметь возможность поддерживать соединение между вызовами, если это не холодный старт. Магазин Redis K / V должен быть публично размещен. ВП C.

...