In this tutorial you'll learn how to expand the default timeouts of OpenFaaS to run your functions for longer.
Part 1 - the core components¶
When running OpenFaaS on Kubernetes, you need to set various timeout values for the distributed components of the OpenFaaS control plane. These options are explained in the helm chart README. The easiest option for new users is to set them all to the same value.
For faasd users, you'll need to edit the equivalent fields in your
docker-compose.yamlfile, see the eBook Serverless For Everyone Else.
We will set:
All timeouts are to be specified in Golang duration format i.e.
HARD_TIMEOUT is set 1-2s higher than the
TIMEOUT value since one needs to happen before the other.
export TIMEOUT=5m export HARD_TIMEOUT=5m2s arkade install openfaas \ --set gateway.upstreamTimeout=$TIMEOUT \ --set gateway.writeTimeout=$HARD_TIMEOUT \ --set gateway.readTimeout=$HARD_TIMEOUT
Once installed with these settings, you can invoke functions for up to
5m synchronously and asynchronously.
If using Helm or Argo CD, then add the following to your values.yaml file instead:
gateway: writeTimeout: 5m1s readTimeout: 5m1s upstreamTimeout: 5m
Part 2 - Your function's timeout¶
Now that OpenFaaS will allow a longer timeout, configure your function.
For the newer templates based upon HTTP which use the of-watchdog, adapt the following sample: go-long: Golang function that runs for a long time
For classic templates using the classic watchdog, you can follow the workshop: Lab 8 - Advanced feature - Timeouts
If you're unsure which template you're using, check the source code of the Dockerfile in the
templates folder when you build your functions.
Check the troubleshooting guide.