Azure -Funktion mit Service -Bus -Trigger - ManagedIdentitycredential Performance

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Azure -Funktion mit Service -Bus -Trigger - ManagedIdentitycredential Performance

by Guest » 13 Feb 2025, 11:15

Ich arbeite an einer Azure -Funktion, die einen Servicebusters verwendet und Azure Table -Speicher abfragt. Um mehrere Nachrichten so schnell wie möglich zu verarbeiten Speicher per defaultAzureCredential. Ein ManagedIdentitycredential, und dieser Anruf ist der Engpass, der zwischen 200 m und 5000 ms liegt. Wenn die obige Einstellung verwendet wird, werden 200 "Instanzen" der Azure -Funktion mit 200 "Instanzen" der Azure -Funktion begonnen, sie zu verarbeiten, und tätigen Sie 200 Anrufe, um ein ManagedIdentitycredential zu erhalten. < /P>
< BR /> Was steckt der Mechanismus dahinter, wie Azure -Funktionen gleichzeitig verarbeitet werden. Erstellt er mehrere Prozesse oder mehrere Threads im selben Prozess? < /li>
Gibt es eine Möglichkeit zum Freigeben / Cache The Anmeldeinformationen, sobald er erhalten wurde, um auch von den anderen Nachrichtenverarbeitungsinstanzen verwendet zu werden, und die redundanten Aufrufe zu /msi /token zu beseitigen? < /li>
< /ol>
Wir sind Verwenden Sie Python als Programmiersprache.

Code: Select all

# helper function to initialize global table service client
def init_azure_resource_clients(config_settings: EligibilitySettings):
"""get table service client for Azure Table Storage and service bus client"""

non_aio_credential = DefaultAzureCredential()

# initialize global Service Bus client
global _azure_servicebus_client
_azure_servicebus_client = ServiceBusClient(fully_qualified_namespace=config_settings.serviceBusNamespaceFQ, credential=non_aio_credential)

# initialize global Table Service Client
global _azure_table_service_client
# prefer connection string if available
if config_settings.tableStorageConnectionString:
_azure_table_service_client = TableServiceClient.from_connection_string(conn_str=config_settings.tableStorageConnectionString)
else:
_azure_table_service_client = TableServiceClient(endpoint=f"https://{config_settings.tableStorageAccount}.table.core.windows.net", credential=non_aio_credential)
< /code>
Und hier ist ein Beispielcode darüber, wie es heißt: < /p>
import logging
import azure.functions as func

# global reference to the azure resources we need to access
_azure_table_service_client = None
_azure_servicebus_client = None

app = func.FunctionApp()

@app.function_name(name="ServiceBusQueueTrigger1")
@app.service_bus_queue_trigger(arg_name="msg",
queue_name="",
connection="")
def test_function(msg: func.ServiceBusMessage):

logging.info('ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))

# initialize global azure resources
init_azure_resource_clients(config_settings)

# parse incoming message
message_body = msg.get_body().decode('utf-8')
message_json = json.loads(message_body)

result = process_message(message_json)

Top