Cálculo da hora da instância
Conforme escrito em Faturamento de instâncias , qualquer instância será exibida pelo menos 15 minutos, mesmo que receba um único pedido. Isso é em parte para evitar que muitos usuários finais experimentem a latência de gerar uma instância. Em vez disso, uma instância ficará inativa e pronta para receber solicitações imediatamente.
Quanto ao modo como as horas da instância são calculadas, isso é baseado no tempo real de operação. Se uma instância F1 estiver operacional por 2,5 horas, ela consumirá cerca de 2,5 horas de instância. O número de horas da instância é multiplicado pelo número da turma, conforme documentado na nota Importante , em Preços do App Engine . Portanto, uma instância F2 operando por 2 horas consumiria 4 horas de instância.
Otimização com simultaneidade e assincronia
Quando se trata de otimização, sua melhor aposta é delegar onde for apropriado e não perder tempo. Por exemplo, suponha que seu manipulador precise obter 3 entidades que contenham URLs do armazenamento de dados e depois buscar essas URLs para alguns dados JSON. Obter entidades do armazenamento de dados leva algum tempo. Se você estiver usando a versão síncrona das get
chamadas, seu manipulador será basicamente bloqueado enquanto recebendo as entidades. Usar a versão assíncrona da get_async
da mesma chamada da API permitirá que o manipulador continue com outras tarefas enquanto as entidades são recuperadas.
Da mesma forma, buscar URLs pode levar muito tempo. Fazer isso de forma síncrona pode congelar seu manipulador enquanto aguarda que eles retornem. A latência será ainda pior se essas solicitações nunca retornarem ou retornarem apenas com o tempo limite padrão. Embora a biblioteca urlfetch
não tenha nenhuma busca assíncrona incorporada muitas bibliotecas de terceiros fazem ou se prestam bem à criação de threads em python. Em go
, você pode buscar essas URLs em goroutines que são executadas simultaneamente. Isso permitirá que o manipulador não apenas continue com outras tarefas, mas também busque essas URLs em paralelo.
Identificando gargalos
Dependendo das necessidades da sua aplicação, pode haver muitas oportunidades para o design simultâneo. Isso pode reduzir bastante os tempos de resposta de suas instâncias, permitindo que elas processem mais solicitações ou diminuam o ritmo mais rapidamente, e as duas consomem menos horas de instância. Sugiro usar o Stackdriver Trace para estudar a duração de uma solicitação. Pode ser útil na identificação de gargalos. Com essas informações, você deve ter uma ideia de onde priorizar a otimização.