Environment
- Plan: Flex Consumption
- Runtime: Python 3.11, v2 programming model (decorator-based)
- Region: Southeast Asia
- Deployment: Azure Functions Core Tools v4 (
func azure functionapp publish --build local)
Problem
A queueTrigger function never fires. A queue message has been sitting with dequeue count 0 for over 24 hours. The scale controller is not dispatching the message to any worker instance.
What I have verified
-
func publish correctly detects and registers the trigger: my_push_worker - [queueTrigger] ✅
-
syncfunctiontriggers API returns { "status": "success" } ✅
- IAM roles on the storage account are all correct: Storage Queue Data Contributor, Storage Blob Data Owner, Storage Table Data Contributor ✅
-
AzureWebJobsStorage is correctly configured (tested both managed identity and full connection string) ✅
- The function executes correctly when invoked manually via Portal Code+Test ✅
- Host startup logs show
my_push_worker listed under Found the following functions ✅
- Storage account traces show continuous
.blob.core.windows.net requests but zero .queue.core.windows.net requests — the host never polls the queue ✅
Scale config always shows:
{
"alwaysReady": null,
"instanceMemoryMB": 2048,
"maximumInstanceCount": 100,
"triggers": null
}
triggers remains null even after successful func publish and syncfunctiontriggers. The scale controller has no trigger metadata to act on, so it never wakes up the app for queue messages.
Queue trigger decorator (function_app.py):
@app.queue_trigger(
arg_name="msg",
queue_name="my-push-jobs",
connection="AzureWebJobsStorage",
)
def my_push_worker(msg: func.QueueMessage) -> None:
asyncio.run(_my_push_worker_async(msg))
Note: queue name is hardcoded as a string literal (not a variable) to ensure static analysis picks it up correctly.
host.json:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
},
"extensions": {
"queues": {
"maxPollingInterval": "00:00:02",
"visibilityTimeout": "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8
}
},
"functionTimeout": "00:10:00"
}
Question
Is there a known issue with Flex Consumption + Python v2 where syncfunctiontriggers succeeds but triggers in the scale config remains null, causing queue triggers to never fire? Is there an additional step required to register queue trigger metadata with the Flex Consumption scale controller?