Search code examples
python-3.xazure-functionsqueuetrigger

QueueTrigger to Write to Queue-Python


I have a queuetrigger which reads a gis feature layer and process its as it writes back to portal. It seems to work alright except the message is not logged onto the outqueue. I say it works alright because I can see the gis featurelayer properly written on the gis portal. I suspect my bindings aren't alright. I don't need to necessarily have the resulting dataframe written back. All I need is any message deposited on the outqueue to resource other processes. Cant post whole code here for privacy but My main file (init_py) can be thought of as:

import logging
import json
import pandas


def main(msg: func.QueueMessage, msg1: func.Out[str]) -> None:
    logging.info('Python queue trigger function processed a queue item: %s',
                 msg.get_body().decode('utf-8'))
       x=1
       y=1
       df=x=1
    
     msg1.set(df)
    

My function.host

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "outqueue12",
      "connection": "storageaccountautom92bb_STORAGE"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
    "type": "queue",
    "direction": "out",
    "name": "msg1",
    "queueName": "outqueue13",
    "connection": "AzureStorageQueuesConnectionString"
    }
  ]
}

Solution

  • binding accept string type and bytes type, so below code should work:

    __init__.py

    import logging
    
    import azure.functions as func
    
    
    def main(msg: func.QueueMessage, msg2: func.Out[str]) -> None:
        num1 = 1
        num2 = 1
        str1 = num1+num2
        msg2.set(str(str1))
    

    function.json

    {
      "scriptFile": "__init__.py",
      "bindings": [
        {
          "name": "msg",
          "type": "queueTrigger",
          "direction": "in",
          "queueName": "test1",
          "connection": "0730bowmanwindow_STORAGE"
        },
        {
          "type": "queue",
          "direction": "out",
          "name": "msg2",
          "queueName": "test2",
          "connection": "0730bowmanwindow_STORAGE"
        }
      ]
    }