Вызовы асинхронных задач для синхронных и асинхронных функций - PullRequest
0 голосов
/ 08 мая 2018

У меня есть функция Azure, которая требует подготовки строки для оператора SQL. Это работает в обоих направлениях, как указано ниже, но я новичок в асинхронных методах, и документация немного перегружена. Мой наивный инстинкт состоит в том, что было бы лучше, если бы возвращаемая строка исходила от асинхронного метода, если что-то передано, но тогда другая часть меня думает, что на самом деле ничего не передано. Есть ли кто-нибудь, кто может объяснить мне разницу между 3 вызовами (включая один с ожиданием) и потенциальные проблемы с кодом ниже?

для контекста. Это функция Azure, запускаемая триггером CosmosDB, предназначенная для выравнивания и записи файла на SQL Server Azure. Ожидаемое количество обновлений в Космосе - около 200 в секунду

public static async Task Run(IReadOnlyList<Document> input, TraceWriter log)
{
    //parameters set based on input Document
    string queryText1a = await firstSqlPrep(parameters);
    string queryText1b = firstSqlPrep(parameters);
    string queryText2 = secondSqlPrep(paremeters);

    //run the SQL statement after one of these

}

public static async Task<string> firstSqlPrep(parameters)
{
     //prepare query text
     return "some string";
}
public static string secondSqlPrep(Document inputDocument)
{
     //prepare query text
     return "some string";
}

1 Ответ

0 голосов
/ 09 мая 2018

Если вы не выполняете какой-либо ввод-вывод внутри SqlPrep метода, нет смысла возвращать Task<string> из него. Оба ваших метода будут работать синхронно, но на самом деле firstSqlPrep вызовет некоторые издержки, связанные с созданием и await -ing Task.

Используйте secondSqlPrep в своем коде. Продолжайте использовать async - await для самого вызова базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...