Я работаю над функцией 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
Функция Azure с триггером сервисной шины - ManagedIdentityCredential производительность ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Функция Azure с триггером сервисной шины - ManagedIdentityCredential производительность
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Функция Azure с триггером сервисной шины - ManagedIdentityCredential производительность
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Потерянная очередь MSG между триггером Timer Timer и триггером в очередь лазурных
Anonymous » » в форуме C# - 0 Ответы
- 40 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно подключиться к эмулятору сервисной шины Azure в Docker от C# (404 ошибка)
Anonymous » » в форуме C# - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно подключиться к эмулятору сервисной шины Azure в Docker от C# (404 ошибка)
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-