This topic describes the invocation methods, concurrency, limits, and retry mechanism for functions.
You can invoke a function in the following ways:
- Synchronous invocation: After an event is processed by a function, the result is directly returned. For example, invoking a function in the Function Compute console is a synchronous invocation.
- Asynchronous invocation: After an event is added to the internal queue of Function Compute, the request ID is returned. Function Compute ensures that events in the queue are reliably processed later. For example, invoking a function by using an Object Storage Service (OSS) event trigger is an asynchronous invocation. For more information about asynchronous invocations, seeManage asynchronous invocation configurations.
- When you use Function Compute Command Line Interface (fcli) or an SDK to invoke a function, you can specify whether to synchronously or asynchronously invoke the function.
- The limits on inbound events are different for synchronous and asynchronous invocations. For more information, see Limits on resource usage.
Execution concurrency is the number of concurrent invocations of a function in a specified period of time. You can use the following formula to estimate the execution concurrency:
- The request rate is the number of requests or events per second for a function.
- The function execution duration is the time used to execute a function, in seconds.
Assume that you have a function that processes OSS events. The average execution duration for the function is 3 seconds, and 10 OSS events are generated per second. You can use the formula to calculate that the execution concurrency for your function is 30.
If functions are incorrectly configured, unexpected results may occur when the functions are executed. Assume that you have configured an OSS event trigger that invokes an image processing function when an image file is uploaded to an OSS bucket. If this function writes the processed file back to the same bucket, the function continuously invokes itself, which results in an infinite loop.
To prevent such an infinite loop from causing financial losses, Function Compute limits execution concurrency to 100 per account. In the Cloud Monitor console, you can use the throttles metric of functions to observe throttling behaviors. To increase the execution concurrency limit, submit a ticket.
If a function fails to be executed, its invocation method determines whether Function Compute automatically retries the function:
- Synchronous invocation: Function Compute does not automatically retry a failed function. You can manually retry the function.
- Asynchronous invocation: In the following situations, Function Compute automatically
retries the function.
Failure cause HTTP status code Server behavior Billable An error of the
UnhandledInvocationErrortype occurs. For more information, see Handle errors.
200 By default, Function Compute retries the function three times. You can change this setting as needed. Billed based on the number of invocations. For more information, see Billing. Execution concurrency exceeds the upper limit. 429 Function Compute retries the function for 5 hours in exponential backoff mode. No An internal system error occurs. 500 Function Compute retries the function for 5 hours in exponential backoff mode. No Function Compute resources are insufficient. 503 Function Compute retries the function for 5 hours in exponential backoff mode. No
If you encounter problems, you can contact Function Compute engineers.