Délai avant expiration de la fonction

Si une fonction s'exécute trop longtemps, le système prend des mesures pour l'arrêter ou la limiter. Par défaut, ce délai avant expiration est défini sur 60 secondes, mais vous pouvez l'étendre ou le réduire lorsque vous déployez la fonction :

  • Dans Cloud Functions (1st gen), la durée maximale avant expiration est de neuf minutes (540 secondes).
  • Dans Cloud Functions (2nd gen), la durée maximale avant expiration est de 60 minutes (3 600 secondes) pour les fonctions HTTP et de 9 minutes (540 secondes) pour les fonctions basées sur des événements.

Lorsque l'exécution de la fonction atteint son délai avant expiration, la réponse du système varie selon s'il s'agit d'une fonction de 1re ou de 2e génération.

  • 1re génération : un message de réponse avec un état d'erreur HTTP, généralement 408, est immédiatement renvoyé à l'appelant. L'exécution de la fonction est interrompue.
  • 2e génération : un message de réponse avec un état d'erreur HTTP 504 est immédiatement renvoyé à l'appelant. L'instance de fonction peut être limitée, mais elle continue de fonctionner jusqu'à ce qu'elle se ferme d'elle-même. Tous les messages de réponse générés par la fonction sont supprimés et ne sont pas renvoyés à l'appelant.

Ce comportement des fonctions de 2e génération peut entraîner des effets secondaires inattendus. L'un des symptômes courants est la "fuite" du travail et des journaux d'une requête dans une requête ultérieure. Pour éviter cela, évitez les délais avant expiration dans vos fonctions à l'aide des techniques suivantes :

  1. Définissez un délai avant expiration supérieur au temps d'exécution attendu de la fonction.
  2. Suivez le temps restant pendant l'exécution. Ensuite, effectuez un nettoyage et renvoyez une réponse plus tôt.

Définir un délai avant expiration

Vous pouvez définir la durée du délai d'expiration d'une fonction au moment du déploiement à l'aide de Google Cloud CLI ou de la console Google Cloud.

gcloud

Si vous déployez l'application à l'aide de gcloud CLI, utilisez l'option --timeout :

gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...

Pour modifier la durée d'un délai avant expiration existant avec Google Cloud CLI, redéployez la fonction en lui attribuant une nouvelle valeur.

Console

Pour définir le délai avant expiration lors de la création de la fonction dans la console Google Cloud, procédez comme suit :

  1. Accédez à la page de présentation de Cloud Functions dans la console Google Cloud.
  2. Cliquez sur Create function.
  3. Renseignez les champs obligatoires de votre fonction.
  4. Développez la section Environnement d'exécution, compilation… à la fin de la page, puis cliquez sur l'onglet Environnement d'exécution.
  5. Dans le champ Délai avant expiration, saisissez un nombre de secondes.

    Pour modifier la durée d'un délai existant dans la console Google Cloud, sur la page de présentation des fonctions, cliquez sur le nom de la fonction pour accéder à sa page d'informations. Sur la page d'informations, cliquez sur Modifier, développez la section Environnement d'exécution, compilation..., puis cliquez sur l'onglet Environnement d'exécution, qui vous permet de modifier directement la valeur dans le champ Délai avant expiration.