@Marti Kevin You may consider to configure the batch size in the host file.
If you want to avoid parallel execution for messages received on one queue, you can set batchSize to 1. However, this setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM). If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.
In order to control that , please look into : https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#website_max_dynamic_application_scale_out
For your reference, https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#concurrency
-------------------------
Update:
In this scenario, I believe, you want to force a lock onto the message so that no receiver can pick it up until it is processed. ( correct me if I am wrong here). For that I would suggest you to explore the https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#message-metadata and see if “NextVisibleTime” could be of any use and “Visibility Time out” https://learn.microsoft.com/en-us/connectors/azurequeues/#when-there-are-messages-in-a-queue
https://learn.microsoft.com/en-us/azure/storage/queues/storage-dotnet-how-to-use-queues?tabs=dotnet#change-the-contents-of-a-queued-message
I would also like to suggest the service bus option, if possible, in this case : https://learn.microsoft.com/en-us/rest/api/servicebus/peek-lock-message-non-destructive-read
You had mentioned timeout issue as well. In case of timeouts there are certain things we can consider. If you are in dynamic i.e. consumption plan then the timeout value has a limitation. You may opt for better plans which will offer you better compute resources and you can maximize the time out value as well.
If this is a python function, then you must remember single threaded architecture of Python. SO you can either increase the number of worker processes by maximizing the or you may look into async calls.
In this kind of scenarios, it is also important whether you are processing the data efficiently. If there is there are any connections to any other application which are not being closed properly or if there are any blocking HTTP sync calls or IO bound calls which will block the entire event loop ( use async to avoid this).
Please let me know if this helps.