Функция Azure с триггером сервисной шины - ManagedIdentityCredential производительностьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Функция Azure с триггером сервисной шины - ManagedIdentityCredential производительность

Сообщение Anonymous »

Я работаю над функцией Azure, которая использует ServiceBustrigger и запрашивает хранилище таблицы Azure. Чтобы обработать несколько сообщений как можно быстрее, мы используем настройку MaxConcurrentCalls для включения параллельной обработки сообщений (например, мы устанавливаем MaxConcurrentCalls на 200).
Мы используем управляемую идентификацию для доступа к автобусе и таблице Azure Хранение через DefaultaUrecredential. ManagedIdentityCredential, и этот звонок - узкое место, которое занимает от 200 до 5000 мс. То есть, используя приведенный выше настройку, если 200 сообщений будут сброшены на сервисную шину, то 200 «экземпляров» функции Azure начнут их обрабатывать и сделают 200 вызовов, чтобы получить ManagedIdentityCredential. < /P>
< Br /> Каков механизм того, как функции Azure обрабатывают сообщения одновременно, создаст ли он несколько процессов или несколько потоков в одном и том же процессе? < /li>
Есть ли способ поделиться / кэшировать учетные данные после того, как он будет получен для использования и других экземпляров обработки сообщений, а также устранить избыточные вызовы /msi /token? < /li>
< /ol>
Мы Использование Python в качестве языка программирования. < /p>
Это код для инициализации ресурсов Azure < /p>
# 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>
А вот некоторый пример кода о том, как он называется: < /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)


Подробнее здесь: https://stackoverflow.com/questions/794 ... erformance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»