Вопросы с тегами [asynchronous]

1

голосов
1

ответ
134

Просмотры

Как не правильно ждать, пока будущее будет завершена в дротиком

Существует небольшая ошибка в моем приложении сделано с флаттером, что, когда пользователь вошел в системе, он получает информацию о пользователе из моей базы данных, но не достаточно быстро и вызывает визуальную ошибку на моем переднем конце приложения. Приложение имеет макеты, которые используют информацию о пользователе (имя, расположение и изображения) и не загружается достаточно быстро. Мне было интересно, если есть способ, чтобы ждать, пока мое будущее, чтобы закончить и, как только это будет сделано, он может перемещаться пользователем к переднему концу без проблем.
user3152311
1

голосов
1

ответ
54

Просмотры

How to consume this EF Core C# async method in F#?

I am using F# with Entity Framework and I can't get my head around consuming C# async methods from F#. Despite others SO answers related to similar issues can't really get my head around. Here is my attempt with the code below, initially synchronous: let getAirport (id: Guid) = use context = new MyContext() context.Flights.Find id |> (fun x -> if box x = null then None else Some x) And its async counterpart: let getAirportAsync (id: Guid) = async { use context = new MyContext() let! flight = context.Airports.FindAsync id |> Async.AwaitTask return (fun x -> if box x = null then None else Some x) } However, when both are called in the main: [] let main argv = let myGuid = Guid.NewGuid() let airport = { Id = myGuid Name = "Michelle" X = 42.0 Y = 42.0 } AirportRepository.addAirport airport let thisAirport = AirportRepository.getAirport myGuid let thisAirportToo = AirportRepository.getAirportAsync myGuid |> Async.RunSynchronously assert (thisAirport = Some airport) assert (thisAirportToo = Some airport) 0 It cannot compile: Program.fs(61, 13): [FS0001] The type '('a -> 'a option)' does not support the 'equality' constraint because it is a function type Program.fs(61, 30): [FS0001] This expression was expected to have type ''a -> 'a option' but here has type ''b option' I read: https://medium.com/jettech/f-async-guide-eb3c8a2d180a https://docs.microsoft.com/en-us/dotnet/fsharp/tutorials/asynchronous-and-concurrent-programming/async C# async / await method to F#? I thought the process to consume an async C# method was: Pass the C# method to |> Async.AwaitTask Pass the result to let! Return that result Wrap everything in an async block which forms the body of an async F# function Use that newly async created F# function by passing it to |> Async.RunSynchronously What am I missing here?
Ehouarn Perret
1

голосов
3

ответ
61

Просмотры

Как правильно выполнить асинхронный метод из ViewModel?

Для целей этого вопроса, у меня есть простое окно со следующим XAML: Проверка Когда пользователи вводят текст в TextBox или проверяют CheckBox, я хотел бы выполнить медленную задачу (например, сохранение состояния моей модели в диск). Вот вид модели: класс ViewModel общественности: ViewModelBase // использование GalaSoft.MvvmLight {личное струнный _myText; публичная строка MyText {прибудет => _myText; множество {если (Set (исх _myText, значение)) Save (); }} Частные BOOL _isChecked; общественный BOOL IsChecked {прибудет => _isChecked; множество {если (Set (исх _isChecked, значение)) Save (); }} Частная асинхронной аннулируются Save () {вар ID = Guid.NewGuid (); Debug.WriteLine ($» первая операция сохранения (от MYTEXT) не сделано до второй операции сохранения (от IsChecked) запускается. Это пугает меня немного, потому что, я думаю, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Я представляю себе, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Я представляю себе, данные могут быть сохранены в неправильном порядке и повреждены. Есть хорошая практика для решения такого рода проблем? Я подумал о нескольких возможных решений. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой. Во-первых, использовать что-то вроде Delay = 100 в TextBox связывания. Это заставит метод Save называться после того, как пользователь прекращает печатать в течение 100 мс. Это уродливое решение по различным причинам. Второй заключается в использовании SemaphoreSlim. Внутри метода Save, я могу окружить код с Try /, наконец, использовать семафор, как описано здесь. Это на самом деле работает, но я не уверен, что это лучший способ справиться с этой проблемой.
redcurry
0

голосов
0

ответ
20

Просмотры

Самый быстрый способ чтения Azure Blob файлов параллельно

Я пытаюсь загрузить файлы двоичных объектов с Azure, используя нижеприведенный код метода загрузки: частный статический асинхронный Task GetPriceString (интермедиат seriesId) {вара maxRetries = 15; хранение вар = CloudStorageAccount.Parse ( «Счет хранения строки соединения»); вар блоб = storage.CreateCloudBlobClient () GetContainerReference ( "Контейнер Имя") .GetBlockBlobReference ($ "{seriesId} .csv."); вар PRICESTRING = ждет Policy.Handle () .WaitAndRetryAsync (maxRetries, попытка => TimeSpan.FromSeconds (попытка * 0,5)) .ExecuteAsync (асинхронное () => ждет blob.DownloadTextAsync ()); вернуться PRICESTRING; } Вызов код: INT [] seriesIds = {10, 100}; Список задачи = новый список (); Еогеасп (вар seriesId в seriesIds) {tasks.Add (GetPriceString (seriesId)); } Ждут Task.WhenAll (задачи); Оно работает, но проблема в том, что занимает около 30 секунд, чтобы прочитать 100 двоичных объектов файлов (размер каждого файла составляет около 200KB). Учитывая размер файлов, скорость чтения очень медленно. Есть ли лучшая альтернатива для загрузки файлов параллельно, как какая-то родной Azure коды вместо мы manully называть его параллельно?
Pரதீப்
1

голосов
0

ответ
166

Просмотры

How to stop reading from stream on a disconnect gracefully?

I have a simple socket connection that runs a read task in async. When I disconnect I get an exception: System.ObjectDisposedException: Cannot access a disposed object. Object name: 'SslStream'. I don't know how to stop it trying to read when it is sitting and waiting to read a message when I call disconnect. This is my read code: public async Task Read(byte[] readBuffer) { if (!IsConnected) { return 0; } try { await Stream.ReadAsync(_header, 0, _header.Length); return await Stream.ReadAsync(readBuffer, 0, _header[0]); } catch (Exception e) { Debug.Log(e); Disconnect(); return 0; } } protected async Task _RunReader() { var totalBytes = await Read(_readBuffer); if (totalBytes > 0) { HandleReader(_readBuffer, totalBytes); _RunReader(); } } And this is my disconnect code: public async Task Disconnect(bool graceful = false) { if (IsConnected && graceful) { lockPackets = true; Empty[0] = 1; // send disconnect message to server for graceful await Send(Empty,1); } Stream?.Close(); TcpClient.Close(); IsConnected = false; } Is there any way to abandon ReadAsync when Disconnect is called to avoid getting an exception? It doesn't effect the program since I try catch, but I feel like there's probably a more elegant way than just allowing it throw silent exceptions?
WDUK
1

голосов
0

ответ
61

Просмотры

angular2 асинхронное выполнение

У меня несколько функций в TS файл, как показано ниже. reply_click (событие) {вар целевой = event.target || event.srcElement || event.currentTarget; вар idAttr = target.attributes.id; sessionStorage.setItem ( 'гео', idAttr.nodeValue); Значение переменного = sessionStorage.getItem ( 'гео'); вар NT = sessionStorage.getItem ( 'NTsession'); вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; вар GeoList = SES [0] .GeoList.substring (0, 3); если (GeoList = значение!) this.router.navigateByUrl ( '/ notAuthorized'); еще {this._userService.get (Global.BASE_USER_ENDPOINT + '/ EmployeeInfo? intEmPKNo =' + intEmPKNo) .do (данные => sessionStorage. SetItem ( 'EmployeeInfo', JSON.stringify (данные))) .subscribe (панель => {this.dashboard = приборная панель; this.indLoading = ложь; this.attendance ();}, ошибка => this.msg = ошибка) ; }} Посещаемость () {вар NT = sessionStorage.getItem ( 'NTsession'); вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; this._userService.get (Global.BASE_USER_ENDPOINT + / MyAttendance? intEmPKNo = '+ intEmPKNo) .do (данные => sessionStorage.setItem ( 'MyAttendance', JSON.stringify (данные))) .subscribe (панель => {этот .dashboard = приборная панель; this.indLoading = FALSE; this.PayPollHealth (); }, Ошибка => this.msg = ошибка); } PayPollHealth () {вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; this._userService.get (Global.BASE_USER_ENDPOINT + / PayrollHealth? intEmPKNo = '+ intEmPKNo) .do (данные => sessionStorage.setItem ( 'PayRollHealth', JSON.stringify (данные))) .subscribe (панель => {этот .dashboard = приборная панель; this.indLoading = ложь; this.router.navigateByUrl ( '/ приборная панель');}, ошибка => this.msg = ошибка); } Так, что HTML загружается после выполнения всех функций, за которые он принимает почти 30 секунд.
Depi
1

голосов
0

ответ
140

Просмотры

How to handle async upload file with NodeJS?

I use Multer to manage file upload. I must verify with JWT (this.verify) to confirm this post. If it is success then my file was uploaded. Because my code is asynchronous, I cannot call this.configUpload(). This is the router: const mailer = require('../../libraries/mailer_lib'); router.post('/',mailer.configUpload(),mailer.verifyJWT()); My Mailer_lib: const Mailer = function() { this.configUpload = function() { const path_folder = '../../uploads/'; var storageOptions = multer.diskStorage({ destination: function (req, file, cb) { let dest = path.join(__dirname, path_folder) ; cb(null, dest); }, filename: function (req, file, cb) { let nameFilter = common.sanitizeFileName(file.originalname); var hashName = md5(nameFilter + common.getTimeMSFloat()); cb(null, hashName + path.extname(file.originalname)); } }); const multipartMiddleware = multer({ storage : storageOptions, fileFilter: function (req, file, callback) { var isFile = file.originalname.toLowerCase(); if (!isFile.match(/ \.(jpg | jpeg | png | doc | docx | xls | xlsx | zip | pdf | ppt | pptx)$ / )) { return callback(new Error('Format File Not Allowed'), false); } callback(null, true); }, limits: { // 6MB fileSize: 1024000 * 6 }, inMemory: true, includeEmptyFields: true }); var cpUpload = multipartMiddleware.fields([ { name: 'proofReporting', maxCount: 1} ]); return cpUpload; }; this.verifyJWT = function () { return function(req, res) { var app = req.app; var DB = req.DB; var token = req.body.token || req.query.token || req.headers['x-access-token'] || req.headers.authorization || req.params.token; var secret = process.env.SECRET_KEY_JWT; if (token) { jwt.verify(token, secret, function(err, decoded) { if (err) { logger.error('JWT_ERROR', err.message); res.json({ 'responseStatus': { 'responseCode' : 403, 'responseDesc': err.message } }); } else if (!decoded.reminder_id) { logger.info('Your Token is not for confirmation reminder'); res.json({ 'responseStatus': { 'responseCode' : 403, 'responseDesc': 'Your Token is not for confirmation reminder' } }); } else if (decoded.next_schedule { if (status[0].is_confirm == 0) { // pending / not approve / var reminderModel = createModel(app); reminderModel.update({ isConfirm : 1, confirmBy : decoded.user_id, dateChecked : common.today() }, { where : { reminderId : decoded.reminder_id } }) .then(row => { if (row == 1) { logger.info('Approve'); res.json({ responseStatus : { responseCode : '00', responseDesc : 'Reminder Has Approve', } }); } else { logger.info('Not Approve'); res.json({ responseStatus : { responseCode : 400, responseDesc : 'Bad request', } }); } }) .catch(err => { logger.error('SQL_GET_EMAIL', err); res.json({ responseStatus : { responseCode : 500, responseMessage : 'Internal Server Error' } }); }); } else if (status[0].is_confirm == 1) { logger.info('Reminder Has Approve'); res.json({ responseStatus : { responseCode : '00', responseDesc : 'Reminder Has Approve', responseDetail : ` ${status[0].date_checked}` } }); } }) .catch(err => { logger.error('SQL Query', err); res.json({ responseStatus : { responseCode : 500, responseMessage : 'Internal Server Error' } }); }); } }); } else { logger.error('TOKEN', 'No token provided'); res.json({ responseStatus : { responseCode : 403, responseMessage : 'No token provided' } }); } }; }; }; I changed to: const mailer = require('../../libraries/mailer_lib'); router.post('/'mailer.verifyJWT()); And put mailer.configUpload behind --> mailer.verify() but my file is not uploaded.
Faustrata1
1

голосов
2

ответ
597

Просмотры

Использование JavaScript асинхр вместо setInterval

Скажем, я хочу, чтобы запустить процесс обновления функции () каждый второй. Я могу сделать это двумя способами: асинхронной функции интервала () {ждут новых Promise ((Рез, REQ) => {SetTimeout (Рез, 1000)}) обновления () интервал ()} или setInterval (обновление, 1000) Есть любая функциональная разница между этими двумя?
May0
1

голосов
1

ответ
194

Просмотры

Дождитесь сохранения перед продолжением функции

У меня есть цикл, который перебирает массив пользователей, этот цикл является асинхронным, что я хочу сделать, это для каждого пользователя создать новый документ и сохранить его и ждать этого, чтобы сохранить и затем перейти к следующему пользователю. Я могу справиться, когда переходить к следующему пользователю, поэтому моя проблема при сохранении новых данных документов. Я использую мангуст метод сохранение. Основная функция выполняется цикл, вот пример. Примечание: 'асинхронный' является асинхронным модуль v2.6.0 async.forEach (пользователи, (пользователь, обратный вызов) => {console.log ( `Проверки $ {user.first_name}`); createNewDocument (пользователь, (ERR) => {если (! эээ) {console.log ( "Новый документ создан."); обратный вызов ();}}, (ERR) => {если (ERR) {console.log ( "Все пользователи были обновлены"); }});}, не связанные с асинхронными пользователями метода. Foreach ((пользователь) => {console.log ( `Проверка $ {user.first_name}`); createNewDocument (пользователь, (ERR) => {если (ERR) {console.log ( "Новый документ создан.")! ;}});}); Функция Функции createNewDocument createNewDocument (пользователь, обратный вызов) {console.log ( "Создание нового дока ..."); пусть DOC = новый док (); doc.save ((ERR) => {если (ERR) {console.log ( `Новый документ, созданный для пользователя $ {user.first_name}`);! обратного вызова;}}); console.log ( «Создание нового док закончил выполнение ...»); } Все выполняется, и последняя вещь, которую я получаю в моем журнале есть куча «Новый документ, созданный для пользователя ....» для всех пользователей. Я попытался довольно много вещей, я попытался поставить doc.save в обещании, но это не сработало, а также, не уверен, что я должен делать. EDIT: Это важно для меня, чтобы создать новый документ, прежде чем перейти к следующему пользователю, я не хочу, чтобы добавить их в вызовы массив, а затем выполнить его, мне нужно сделать проверку, что предыдущий документ действительно существует, и принять некоторые данные из него на следующий раз, когда цикл входит
Muhand Jumah
1

голосов
0

ответ
83

Просмотры

Возвращает переменную из класса функции без Undefinided ссылочных NodeJS

Каждый раз, когда я пытаюсь присвоить переменную из класса я не могу использовать его. Потом, когда я делаю небольшой образец кода, чтобы поставить на линии, функции работают в небольшом примере. Как войти в переменном на экран после возвращения его из класса? В небольших примерах кода он работает, в более широком коде на самом деле делать вещи, я получаю неопределенную ссылочную ошибку, вероятно, так как функция займет больше времени, чтобы работать. С помощью main.js как: вар KeyPair = требуется ( './ KeyPair'); вар Q = требуется ( "Q"); path_k = __dirname + "/user_p_key_1.txt"; вар пара = новый KeyPair (); вар р = pair.getPublicKey (path_k); console.log (р + "sig_1"); // ошибка: журналы «неопределенные sig_1» вместо ключа. Q.fcall (р = pair.getPublicKey (path_k)) .then (console.log (р + "sig_2")); // ошибка: журналы «неопределенные sig_2» вместо ключа. Выход: не определено sig_1 неопределенными sig_2 Key FileRead успешно ли действующий открытый ключ? истинный Ключ: GAVAPNTBWRG337JWZYLR2SBPD5KFA2PPXDMN4HEEBLWSZQIKTPOEFZL6 Ключ FILEREAD успешно ли действующий открытый ключ? истинный Ключ: GAVAPNTBWRG337JWZYLR2SBPD5KFA2PPXDMN4HEEBLWSZQIKTPOEFZL6 Ключ FILEREAD успешно ли действующий открытый ключ? истинный Ключ: GAVAPNTBWRG337JWZYLR2SBPD5KFA2PPXDMN4HEEBLWSZQIKTPOEFZL6 Использование Keypair.js Класс: вар фс = требуется ( «фс»); вар StellarBase = требуется ( «звездной базы»); вар StellarSdk = требуется ( 'звездной SDK'); // Класс для ссылки методы KeyPair для чтения и записи из файлов метода вара = KeyPair.prototype; Функция KeyPair () {} method.getPublicKey = функция (path_k) {// Чтение ОткрытыйКлюч из имени файла fs.open (path_k, 'г', функция (ERR, FD) {если (ERR) {бросок 'не удалось открыть файл:' + заблуждаться; } // Буфер массива инициализируется для открытого ключа // записать содержимое буфера, из положения 0 до конца, в дескриптор файла, возвращаемый в открытии нашего файла уаг обр = [NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ,ноль]; вар buffer_k = Buffer.from (обр); fs.read (FD, buffer_k, 0, buffer_k.length, нуль, функция (ERR) {если (ERR) бросок 'ошибка чтения файла:' + заблуждаться; fs.close (FD, функция () {//console.log ( 'Key FileRead успешно'); вар user_encoded_k = StellarBase.StrKey. encodeEd25519PublicKey (buffer_k); //console.log('Is это действующий открытый ключ '); //console.log(StellarBase.StrKey.isValidEd25519PublicKey(user_encoded_k)); //console.log('Key:»+ user_encoded_k); вернуть user_encoded_k}); }); }); }; Чтение в "user_p_key_1.txt" Public Key: * ¶a'M½ý6ÎH / TPiï¸ØÞ «I, A> UB Ключ является для тест-сервера. Кроме того, я создал упрощенный Keypair.js, как показано ниже, чтобы показать, что мой код не работает, а образец Keypair.js работал отличается от Keypair.js выше и назначить переменный и вошел его правильно экран. Упрощенный Keypair.js вара фс = требуется ( «фс»); // Класс для ссылки методы KeyPair для чтения и записи из файлов метода вара = KeyPair.prototype; функционировать метод KeyPair () {}. getPublicKey = функция (значение) {} возвращает 1; module.exports = KeyPair; Я считал, что это, возможно, что-то делать с асинхронным интерпретатором не закончило с функцией, когда переменный называются так я реализовал его впоследствии в обещаниях, и к моему неверию р еще вернулся неопределенным. Как мы присваиваем переменной из функций класса и использовать его в Node.js?
Julian Wise
1

голосов
0

ответ
107

Просмотры

HashMap с станд :: будущее как ключ

Так как мы не можем получить аргументы из Std :: будущего, я пытаюсь поддерживать отображение между стандом :: будущим и стандом :: строкой. Следующее утверждение: станд :: unordered_map карта не выдает следующее сообщение об ошибке: ошибка: не подходит для вызова '(Уст станд :: хэш) (сопзЬ станд :: Будущее &)' │ = • noexcept (declval () (declval () ))> Как я могу решить эту проблему?
UnderWood
1

голосов
0

ответ
33

Просмотры

StartThreadpoolIo бросает исключение недопустимого параметра

Я пытаюсь использовать именованные каналы с новым API пула потоков. Мой код работает большой часть времени, но я получаю перемежающийся недопустимое исключение параметра при вызове StartThreadpoolIo. Я проверил, что TP_IO не был закрыт, а ручка действует; так что я в недоумении относительно того, что происходит не так. Кто-нибудь знает, что другие условия недопустимое исключение параметра?
Queueless
1

голосов
0

ответ
525

Просмотры

Захватив CancelKeyPress, чтобы остановить приложение асинхронной консоли в безопасном месте

Я работаю на небольшое приложение, утилита консоли, встроенный в C # 7.1 (которая имеет асинхронной Главная поддержка). Приложение занимает одно из нескольких команд ввода, а затем начинает длительный процесс, который Перебирает десятки тысяч элементов, обработки каждого из них. Я хочу, чтобы иметь возможность отменить этот процесс в любое время (с помощью CTRL + C), хотя эта программа не должна немедленно отменить, но вместо этого он должен закончить текущую итерацию, затем остановится. Вот сокращенный вариант того, что я до сих пор. частное статическое BOOL _cancel; частная статический асинхронные задачи Main (string []) {ARGS Console.CancelKeyPress + = (отправитель, EventArgs) => {eventArgs.Cancel = истина; _logger ( "миграция будет остановлена ​​после того, как текущая запись была завершена. ве было предложено найти waithandle.cs и thread.cs. Потому что я не могу найти такие файлы, бегущая процесс отладки резко останавливается. Я не могу видеть, какую линию является причиной проблемы, и никакого количества контрольных точек не помогает. В принципе, я пытаюсь использовать CTRL + C, чтобы выйти из процесса долгоиграющего, не выходя из консольного приложения. Может кто-нибудь сказать мне, как я должен правильно обрабатывать отменяя длительный процесс консольного в точке моего выбора? UPDATE:. Если я могу обновить свой CancelKeyPress делегат ... Console.CancelKeyPress + = (отправитель, EventArgs) => {** eventArgs.Cancel = истина; ** _logger ( "миграция будет остановлена ​​после того, как текущая запись была завершена \ п "); _cancel = TRUE; }; то это останавливает программу от падения к концу, но я все еще хотел бы быть в состоянии улавливать CTRL + C и использовать его в качестве средства выхода из затянувшегося процесса, не выходя из самого консольного приложения. Является ли это вообще возможно?
awj
1

голосов
1

ответ
36

Просмотры

nodejs foreach not returning correct value

Я пытаюсь использовать эту функцию, чтобы получить некоторые общие счетчики из моих файлов войти s3, а затем добавить их к общему вернуться Название переменной. Но я не могу получить обратный вызов правильно. Я попытался обратного вызова в конце цикла Еогеасп, а также в «другой» в конце, но в любом случае totalRowCount всегда равен нулю BCZ операторы начинают выполняться сразу. Не уверен, что я делаю не так, спасибо за любую помощь. Функция getRowCount2 (маркер, PARAMS, обратный вызов) {вар totalRowCount = 0, TextDecoder = textEncoding.TextDecoder, г = 0; если (маркер) params.ContinuationToken = маркер; s3.listObjectsV2 (PARAMS, функция (ERR, данные) {я = data.Contents.length; data.Contents.forEach (функция (файл, индекс) {s3.getObject ({Ковш: params.Bucket, Key: file.Key }, функция (ERR, данные) {zlib.gunzip (data.Body, функция (ERR, результат) {вар extractedData = JSON.parse (новый TextDecoder ( "UTF-8") декодирования (результат).); totalRowCount = totalRowCount + ParseInt (extractedData.rowcount , 10);}); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. Gunzip (data.Body, функция (ERR, результат) {вар extractedData = JSON.parse (новый TextDecoder ( "UTF-8") декодирования (результат));. totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10);} ); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. Gunzip (data.Body, функция (ERR, результат) {вар extractedData = JSON.parse (новый TextDecoder ( "UTF-8") декодирования (результат));. totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10);} ); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. результат) {вар extractedData = JSON.parse (новый TextDecoder ( "UTF-8") декодирования (результат)). totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10); }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. результат) {вар extractedData = JSON.parse (новый TextDecoder ( "UTF-8") декодирования (результат)). totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10); }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. синтаксический анализ (новый TextDecoder ( "UTF-8") декодирование (результат).); totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10); }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. синтаксический анализ (новый TextDecoder ( "UTF-8") декодирование (результат).); totalRowCount = totalRowCount + ParseInt (extractedData.rowcount, 10); }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. }); если ((индекс + 1) == я) {console.log ( 'обратного вызова' + totalRowCount); вернуть обратный вызов ( '', totalRowCount); }}); }); если (data.IsTruncated) getRowCount2 (data.NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать. NextContinuationToken, PARAMS, обратный вызов); еще // возвращает обратный вызов ( '', totalRowCount); }); } GetRowCount2 ( '', Титулы, функция (ошибка, данные) {// проверить, равен ли (mycount == данные) {// Успех}}); Я раздел протоколирование и обработку ошибок, чтобы помочь читать.
Ron
1

голосов
0

ответ
169

Просмотры

питон клиент Торнадо асинхронной

Я создал партию с задержкой HTTP (асинхронной) клиент, который позволяет запускать несколько запросов асинхронной HTTP и, самое главное, что позволяет отложить начало запросов так, например, 100 запросов не срабатывают одновременно. Но есть проблема. Метод HTTP .fetch () имеет параметр handleMethod, который обрабатывает ответ, но я обнаружил, что если задержка (спящий режим) после выборки не достаточно долго, метод ручки даже не срабатывает. (Возможно, запрос будет убит или то, что в то время). Это, вероятно, связано с .run_sync метод. Как исправить это? Я хочу поставить задержки, но не хотят этот вопрос бывает. Мне нужно, чтобы разобрать ответ, независимо, как долго запрос принимает, независимо следующий вызов сна (этот вызов есть еще одна причина, как я сказал, и не должны быть связаны с обработкой ответа на все) класса BatchDelayedHttpClient: четкости __init __ (сам,
luky
1

голосов
1

ответ
86

Просмотры

Нужна небольшая помощь в понимании поведения Node.js. Почему сервер реагировать КоА синхронно с двух одновременных запросов от того же браузера?

Так что я просто пытаюсь написать привет-сервер в мире с коа и коа-маршрутизатором. Это мой код. Const Коа = требуется ( 'КоА') Const маршрутизатор = требуется ( 'КоА-маршрутизатор') константные тайм-аут = (мс) => нового посыл (Рез => SetTimeout (разрешение, мс)) Const метки времени = () => {Const г = новая дата () возвращение `$ {d.getUTCMinutes ()}: $ {d.getUTCSeconds ()}`} пусть REQ = 0 Const приложение = новый Коа () app.use (асинхронная (CTX, рядом) => {ctx.state.req = REQ console.log ( `URL: $ {} ctx.url время: $ {метка времени ()} запрос: $ {REQ ++}`) ждать следующего ()}) Const маршрутизатор = новый маршрутизатор () router.get ( '/', асинхронной (CTX, рядом) => {ctx.body = {сообщение: "Hello, World!"} ждать следующего ()}) router.get ( '/ favicon.ico', асинхронная CTX => CTX) router.get ( "/ тест", асинхронная CTX => ctx.body = "Просто тест") приложение. использовать (router.routes ()) app.use (асинхронная CTX => {Await таймаут (10000) console.log ( `Хит REQ: $ {} ctx.state.req время: $ {метка времени ()}`) CTX .body.message + = «После задержки!»}) app.listen (3000) console.log ( `прослушивает порт 3000`) Теперь это прекрасно работает для одного запроса из одного браузера. Проблема возникает, когда я пытаюсь сделать второй запрос на локальный хост: 3000 из того же браузера. Второй запрос не регистрироваться (обрабатывается?), Пока первый запрос не был завершен. Этого не происходит, если я делаю запрос / тест или использовать другой браузер, чтобы сделать запрос. Поведение согласуется как для Chrome и Firefox. Исключением является только Firefox Quantum. Прослушивание на порт 3000 URL: / времени: 47: 5 Запроса: 0 URL: / время: 47: 7 Запрос: 1 Hit REQ: 0! время: 47:15 Хит REQ: 1! время: 47:17 URL: / время: 47: 21 запрос: 2 Hit REQ: 2! время: 47:31 URL: / время: 47:31 Запрос: 3 Hit REQ: 3! время: 47:41 URL: / время: 58:14 Запрос: 4 Hit REQ: 4! время: 58:24 URL: / время: 58:47 Запрос: 5 URL: / время: 58:50 Запрос: 6 Hit REQ: 5! время: 58:57 Хит REQ: 6! Время: 59: 0 Здесь просить 0 и 1 из двух разных браузеров. Как вы можете видеть, запрос 1, независимо от запроса 0 своего статуса. Запрос 2 и 3 выполнены из того же браузера (либо Chrome, Firefox или Opera, его же для каждого из них). Здесь запросить 3 только регистрируется после того, как сервер закончил отвечать на запрос 2. Запрос 4 был единичный запрос. Запрос 5 и 6 являются от Firefox Quantum и он ведет себя так, как ожидалось. / Время: 58:50 Запрос: 6 Hit REQ: 5! время: 58:57 Хит REQ: 6! Время: 59: 0 Здесь просить 0 и 1 из двух разных браузеров. Как вы можете видеть, запрос 1, независимо от запроса 0 своего статуса. Запрос 2 и 3 выполнены из того же браузера (либо Chrome, Firefox или Opera, его же для каждого из них). Здесь запросить 3 только регистрируется после того, как сервер закончил отвечать на запрос 2. Запрос 4 был единичный запрос. Запрос 5 и 6 являются от Firefox Quantum и он ведет себя так, как ожидалось. / Время: 58:50 Запрос: 6 Hit REQ: 5! время: 58:57 Хит REQ: 6! Время: 59: 0 Здесь просить 0 и 1 из двух разных браузеров. Как вы можете видеть, запрос 1, независимо от запроса 0 своего статуса. Запрос 2 и 3 выполнены из того же браузера (либо Chrome, Firefox или Opera, его же для каждого из них). Здесь запросить 3 только регистрируется после того, как сервер закончил отвечать на запрос 2. Запрос 4 был единичный запрос. Запрос 5 и 6 являются от Firefox Quantum и он ведет себя так, как ожидалось. Здесь запросить 3 только регистрируется после того, как сервер закончил отвечать на запрос 2. Запрос 4 был единичный запрос. Запрос 5 и 6 являются от Firefox Quantum и он ведет себя так, как ожидалось. Здесь запросить 3 только регистрируется после того, как сервер закончил отвечать на запрос 2. Запрос 4 был единичный запрос. Запрос 5 и 6 являются от Firefox Quantum и он ведет себя так, как ожидалось.
Kid Coder
1

голосов
0

ответ
62

Просмотры

Одновременный Futures: Лучшие настройки для нескольких запросов? Async

Я хотел, чтобы оптимизировать скрипт, чтобы сделать так много запросов сети, как это возможно. Я вижу max_workers это может быть ограничено числом ядер на машине. Означает ли это, если этот скрипт запускается на машине EC2, например t2.2xlarge с 8 виртуальных ЦП, то скрипт будет эффективно ограничено 8, например РАБОТНИКОВ = 8? Если да, то есть ли лучший способ сделать более 8 запросов одновременно? Пример: РАБОЧИЕ = 16 # это должно быть ограничено до 8? Защиту make_req_futures (url_list): # Мы можем использовать с заявлением, чтобы обеспечить темы очищаются быстро с concurrent.futures.ThreadPoolExecutor (max_workers = РАБОТНИКИ) в качестве исполнителя: # Запуск операции загрузки и пометить каждое будущее с его URL future_to_url = {исполнителя .submit (load_url, URL, 60): URL для URL в url_list} для будущего в concurrent.futures.as_completed (future_to_url):
Vinnie James
1

голосов
0

ответ
58

Просмотры

NodeJS app making rate limited parallel async API calls

Я новичок в NodeJS, и хотел бы знать, что это лучший образец, чтобы использовать для достижения следующих целей. просит входящий вызов API REST для операции пакетной (скажем, 100 элементов) должны быть выполнены. Экспресс-обработчик затем должен сделать 100 внешних вызовов асинхронной API, который может занять до 120 секунд, чтобы вернуться, но много минут, чтобы закончить. Обработчик просто возвращает с ACK, а затем очереди на запросы на обработку. (Say в базе данных или памяти), то мне нужно обрабатывать каждый запрос на внешних вызовов API в parallell: - (A) Каждый вызов API возвращает количество «свободных ресурсов» доступны (после текущего вызова API обслуживается) для дополнительные параллельные вызовы. (В) Тем не менее, эти вызовы API должны быть сделаны параллельно, и не должно быть предпринято, если количество «свободных ресурсов» на внутреннем интерфейсе меньше определенного порогового значения. Идея проста: - Приложение не должно делать слишком много параллельных вызовов API. Он должен попытаться оставить по крайней мере, скажем, пять Серверные ресурсы бесплатно. Тем не менее, как количество свободных ресурсов доступна только после того, как первый вызов API сделан, его OK, чтобы перейти к пределу первоначально, а затем масштабировать позже. В Java я хотел бы сделать это следующим образом: Для входящей очереди партии заселить с 100 объектами запроса. (После сохранения состояния в БД) Имея фиксированное количество рабочих потоков, обслуживающих очередь. Каждый рабочий поток будет проверить глобальный объект, который будет поддерживать количество свободных ресурсов. Если свободные ресурсы больше, то порог, сделать вызов API, а также обновлять глобальный счетчик. (Также обновление БД, чтобы указать API прозвучавший для запроса пакетного элемента. Этот пункт будет повторно передан в очередь, если вызов API не удался по какой-либо причине) я не слишком озабочен оптимизации количества потоков работают или начальными шипы и т.д., до тех пор, пока существует приличная попытка не флудить бэкенд с слишком много запросов. Любые предложения для любых рамок бассейна асинхронной / нити я могу использовать?
Shahed
1

голосов
0

ответ
97

Просмотры

looping over multiple async_generator objects together

Я начал работать некоторые проблемы освоить питон asyncio модуля. То, что я хотел, чтобы создать это «часы», которые в основном только печатает время после того, как программа началась в час: минуты: секунды. Я думал сделать три async_generators и перекручивания над этими три async_generators используя для цикла в отдельном методе асинхронного. С помощью метода встроенного почтового () для этого дает мне следующее сообщение об ошибке. Ошибка типа: почтовый аргумент # 1 должен поддерживать итерационный код: импорт asyncio второй = 1 асинхронной четкости секунд (): в то время как Правда: для I в диапазоне (1,61): ждут asyncio.sleep (второй) выход я ASync четкости минут (): в то время как Правда: для я в диапазоне (1,61): жду asyncio.sleep (60 * второй) выхода я ASync четкости часов (): в то время как Правда: для я в диапазоне (1,61): жду asyncio. сна (60 * 60 * второй) выход я ASync четкости часов (): для s, m, Н в молнии (в секундах (), минуты (), часы ()): Печать ( '{0}: Н {1}: м {2}: S'.format (ч, м, с)), если __name__ == '__main__': петля = asyncio.get_event_loop () loop.run_until_complete (часы ()) Мой вопрос, не async_genertator объекты поддержки итерация? Когда я проверил, я мог видеть, что объект async_generator часов () имеет ____aiter____ метод. Не ____aiter____ Iterable? Что не так с кодом я написал. я мог видеть, что объект async_generator часов () имеет ____aiter____ метод. Не ____aiter____ Iterable? Что не так с кодом я написал. я мог видеть, что объект async_generator часов () имеет ____aiter____ метод. Не ____aiter____ Iterable? Что не так с кодом я написал.
AJAY AJITH
1

голосов
0

ответ
94

Просмотры

Async callbacks from java or groovy

Позвольте мне установить абстракцию контекста проблемы. У нас есть продукт, который выполняет какую-то функцию, которую мы хотим сохранить настраиваемыми. Мы обеспечиваем основу, где другая команда разработчиков может изменить как некоторая функция ведет себя, указав заводной скрипт, который будет вызываться нашей системы. Их заводной сценарий обычно выполняет вызовы отдыха, который оказывается синхронным. Так что, если у нас есть несколько мест в нашей системе, где может быть задана такая заводная скрипты, то каждый из этих остальных вызовов в различных заданном заводных результатах сценария в синхронном блокировании потоков. Является ли их каким-либо образом мы можем сделать эти заводной скрипты делать асинхронные остальные вызовы так, что после того, как сделан вызов, поток может выполнять другую работу (скажем, выполнить другие заводной скрипт), и если результат от этого покоя вызова получен соответствующий заводной сценарий возобновляется сразу после вызова остальные? Быстрый прибегая к помощи «заводной асинхронной» дать это в качестве первого результата поиска. Если я правильно понял статью правильно, он просто делает асинхронной вызов и немедленно возобновляет выполнение после оператора вызова. Это не мне нужно в моем случае, я хочу, чтобы приостановить выполнение сценария после асинхронного вызова, пусть нить сделать что-то другое, и возобновить сценарий когда результат вызова получен? Это выполнимо с некоторой минимальной модификацией, необходимой для данного заводного сценария? Скажем, с некоторыми пользовательскими аннотациями добавлены к способам делая отдых звонки (как в случае выше связанного DZone статьи)? Предоставляет ли заводной язык что-то вроде этого из коробки? Или даже Java (так как я могу иметь чистый Java в заводной) обеспечивают что-то вроде этого из коробки? Кажется, что у меня есть плохой опыт в асинхронном программировании на что-то, чтобы нанести удар в моей голове, чтобы решить это требование. Edit Если бы мысль о том я, на самом деле, глядя на «асинхронный отдых»? Есть ли асинхронное остальное (что-то вроде этого) удовлетворить мои потребности? Кто-то, кажется, проголосовали за закрытие вопроса с той причине, что ответ может быть основано мнение. Я не хочу здесь мнения. Я не знаю ни одного из возможных решений. Так что я хочу знать, что, как правило, используется в такой ситуации, сообщество разработчиков. Теперь их могут быть разные решения. Но я не хочу, чтобы сравнить их, как лучше и хуже. Я просто хочу знать, если их все и если да, то каковы они. Мнения не участвует !!!
Mahesha999
1

голосов
1

ответ
93

Просмотры

(Async & await) vs (without Async & await) in Web API

I am new with Async and await using C# Programming. In WebAPI, we have created two API Controllers one with Async and await Programming and other is without that. We have done load testing using JMeter and we have got following results. Users Sync Async 100 No Errors No Errors 500 No Errors No Errors 750 No Errors Errors - (59.0 %) - 502 Bad Gateway 763 No Errors Errors 764 No Errors Errors 765 Errors - (0.13 %) - 502 Bad Gateway Errors 1000 Errors Errors Can you any please explain/suggest which approach is best or how can we proceed ? API Code : GetPersonalDetailsController - Async and await Used public async Task GET([FromUri] RequestQueryListDTO objAPIRequest) { DateTime startResponseTime = DateTime.Now; Response objResponse = null; string strResponse = string.Empty; var HeaderType = Request.Content.Headers.ContentType; ProductBAL objProductBAL = null; try { if (objAPIRequest != null) { Task tskGetProductDetails = Task.Run(() => { objProductBAL = new ProductBAL(); return objProductBAL.GetProductDetails(objAPIRequest); //Business Access Layer Logic calling }); objResponse = await tskGetProductDetails; } else { objResponse = new Response(); objResponse.ReturnCode = -1; objResponse.ReturnMessage = "Missing Parameters."; } } catch (Exception ex) { \\ Exception Logging } finally { objProductBAL = null; } objResponse.ResponseTime = Math.Round((DateTime.Now - startResponseTime).TotalMilliseconds).ToString(); if (objResponse.ReturnCode == Convert.ToInt32(General.ReturnCode)) { return Content(HttpStatusCode.BadRequest, objResponse); } else { return Ok(objResponse); } } ======================================================================== GetPDPController - Without using Async and await public IHttpActionResult GET([FromUri] RequestQueryListDTO objAPIRequest) { DateTime startResponseTime = DateTime.Now; Response objResponse = null; string strResponse = string.Empty; var HeaderType = Request.Content.Headers.ContentType; try { if (objAPIRequest != null) { //Business Access Layer Logic calling } else { objResponse = new Response(); objResponse.ReturnCode = -1; objResponse.ReturnMessage = "Missing Parameters."; } } catch (Exception ex) { // Exception Logging Code } finally { objProductBAL = null; } objResponse.ResponseTime = Math.Round((DateTime.Now - startResponseTime).TotalMilliseconds).ToString(); if (objResponse.ReturnCode == Convert.ToInt32(General.ReturnCode)) { return Content(HttpStatusCode.BadRequest, objResponse); } else { return Ok(objResponse); } }
1

голосов
0

ответ
762

Просмотры

Фильтр трубы для асинхронных данных в радиально-5

Я использую трубку, чтобы отфильтровать таблицу, в которую приходит данные асинхронно с сервера, и до тех пор, пока данные поступают, туннель непрерывно возвращает неопределенное значение: Моя труба: импорт {Pipe, PipeTransform} от «@ угловой / ядра»; @Pipe ({имя: 'фильтр', чистый ложь}) экспорт класс FilterPipe реализует PipeTransform {Transform (пункты: любое [], имя пользователя): любой {console.log ( 'USERNAMES', Username); вернуть имя пользователя? items.filter (пункт => item.displayUsername.indexOf (Username) == -1!): пункты; }} И где я использую его: И это имеет очень плохое влияние на производительность приложений. Может быть, я понимаю, работа трубы не совсем правильно, но как я могу переписать трубу так, что он возвращает значения только тогда, когда вводится текст на вход?
Vladimir Humeniuk
1

голосов
0

ответ
58

Просмотры

Почему виртуальная память растет во время map_async работы с питоном?

Я пытаюсь создать межатомные расстояния N = 6000 атомов на 100 кадров. Каждый кадр содержит положение атомов в периодической границе окне. Я пытаюсь распараллелить этот процесс с использованием многопроцессорных инструментов питона. В основном я использую функцию map_async: Q = бассейн (нп) для группы в группах: first_frames.append (группа [0]) = start1 таймера () # S = q.map (dipoles.new_create_neighborlist, first_frames) s = q.map_async ( dipoles.new_create_neighborlist, first_frames) q.close () q.join () first_frames список объектов, который содержит атом позиции и т.д. Длина списка first_frames 1000. Количество процессоров 16. Она начинается хорошо, и делает вычисление без проблема. Однако через некоторое время виртуальной памяти, используемые процессы растет и дает виртуальную ошибку памяти. диполи. new_create_neighborlist возвращает список атомов с его neighborlists. Я пробовал ранее ответил методы, но не работает. Что я мог бы здесь не хватает?
dundar yilmaz
-3

голосов
0

ответ
23

Просмотры

Изящно перехватывать исключения и продолжить процесс законченные элементы? [на удерживании]

Классическая сцена: 1.Read URL-адрес в файле TXT вара URLs = ReadAllLines (TXT) 2. Загрузите веб-страница вар страница = ждет GetAllPagesAsync (URLs) 3.Crawl Фотография вара ГИМ = ExtratImages (страница) 4.Save фотографии к местной AWAIT SaveAsync (ГИМ) Шаг 1 ~ 4 может быть сгенерировано исключением, я хочу, чтобы поймать исключение и всплывали приглашение окна сообщения, а затем продолжить. Например: а. Читать все URL-адреса в TXT (всего: 10) б. Загрузка веб-страниц (Исключение при загрузке страницы 7-й) с. Всплывающие окна сообщения д. Выполнить шаги 3, 4
CodingNinja
1

голосов
1

ответ
33

Просмотры

Использование Еогеаспа обхода для вызова асинхронной функции, возвращает результат и запрос не является нормальным? [Дубликат]

Этот вопрос уже есть ответ здесь: Как вернуть ответ от асинхронного вызова? 34 ответов асинхронной функции запрос (число) {пусть данные = ждет запроса (URL, {числа}) console.log (NUM, данные)} [1, 2] .forEach (функция (пункт) {пусть _self = это (функция ( элемент) {SetTimeout (() => {_self.query (пункт) console.log (пункт)}, я)}) (пункт)}) // если server.get ответ сервера ( '*', функция (REQ , разреш) {пусть Num = req.num res.send (NUM)}) асинхронный ответ запроса: // 1, 2 // 2, 1, но ответ ожидание // 1, 1 // 2, 2, как может я получить желаемые результаты? Как параметр запроса согласен с результатом возвращения?
dale
1

голосов
1

ответ
82

Просмотры

Node.js: Предотвращение нескольких одновременных вызовов функции асинхронной

В однопоточной, синхронной нерекурсивна коде, мы можем быть уверены, что для любой функции, никогда не бывает более одного вызова его в ходе работы на некоторое время. Однако, в асинхронном / ждет мира, выше уже не относится: в то время как мы ожидали что-то во время выполнения функции асинхронных е, она может быть вызвана снова. Мне пришло в голову, что, используя излучатели событий и очереди, мы могли бы написать оболочку вокруг функции асинхронной, чтобы гарантировать, что это никогда не было больше, чем один вызов за один раз. Что-то вроде этого: константные события = требуют ( «события») функция заблокирована (async_fn) {сопз очереди = [] // либо активно работает или ожидания запуска константные омега = новые события () omega.on ( «Foo», () => {если (queue.length> 0) {очереди [0] .emit ( 'бар')}}) функция возврата (... арг) {вернуть новое обещание ((решимость) => {константный альфа = новые события () queue.push (альфа) alpha.on ( 'бара', асинхронное () => {решимость (ОЖИДАНИЕ async_fn (... арг) ) queue.shift () omega.emit ( 'Foo')}), если (queue.length === 1) omega.emit ( 'Foo')})}} идея заключается в том, что если е является функцией асинхронной затем закрывается (е) есть функция, которая делает то же самое, за исключением того, что если е вызываются во время выполнения е, новый вызов не начинается до первых возвращения вызова. Я подозреваю, что мое решение имеет много возможностей для улучшения, так что я задаюсь вопросом: есть ли лучший способ сделать это? На самом деле, есть один уже встроен в узел, или доступен через НПМ? EDIT, чтобы показать, как это используется: асинхронная функция () {консоли.
TheFlanCalculus
1

голосов
0

ответ
19

Просмотры

Асинхронный Ajax Script Работа для веб-приложения

Я пытаюсь разработать сложное приложение с помощью JavaEE. Так что я в настоящее время разработал приложение для запуска некоторых сценариев на Backend. Тэй должны выполняться последовательно, поэтому я делаю запросы с помощью синхронной Ajax вызовов внутри цикла. Но мне теперь нужно добавить функциональность, чтобы остановить сценарии, если они слишком долго, чтобы бежать. Проблема заключается в том, я использую синхронный вызов Ajax. Поэтому я не могу взаимодействовать с UI, пока не будет получен ответ. $ .Ajax ({типа: "GET", кэш: ложный, URL: "Servlet Path", данные: {данные: my_data}, асинхры: ложь, успех: функция (ответ) {// Отображение сценарии Выход}, отказ: функция (ответ) {console.log ( "Ошибка"); }}); Мой план заключается в использовании идентификатора процесса и запустить сценарий «убить -9 PID», чтобы остановить скрипт. Если я использую асинхронный называть то все скрипты будут запущены сразу. Как я могу сделать это случиться?
1

голосов
0

ответ
42

Просмотры

Доступ к CancellationToken что отмененное Задачу

Я выполнение стандартного цитого копирования результата выполнение задачи в TaskCompletionSource: TaskCompletionSource ТКС = ...; Задача Задача = ...; task.ContinueWith (т => {если (t.IsCanceled) tcs.TrySetCanceled (новый TaskCanceledException (задача) .CancellationToken); иначе, если (t.IsFaulted) tcs.TrySetException (task.Exception.InnerExceptions); остальное tcs.TrySetResult ( task.Result);}); Вы могли заметить забавные немного коды там, чтобы установить маркер, который вызвал отмену. Это та часть, что я пытаюсь сделать немного чище. В качестве деталей реализации существует элемент Task.CancellationToken, что было бы здорово, чтобы иметь доступ к, но это внутреннее. Построив новый TaskCanceledException это самый дешевый способ я могу найти, чтобы получить к нему доступ. Есть ли способ лучше?
Cory Nelson
1

голосов
1

ответ
62

Просмотры

Как обновить реагировать состояние дважды в одном submitHandler

Я хочу, чтобы отправить форму в React, и я пытаюсь обновить состояние дважды с одним submitHandler. Второе обновление зависит от первого обновления. submitHandler (событие) {event.preventDefault (); пусть целевой = event.target; пусть Allmessages = this.props.messages; пусть название = target.title.value, сообщение = target.message.value, пользовательские = target.user.value, время = `$ {(новая дата) .getHours ()}: $ {(новый) Дата .getMinutes () } `, ID = Allmessages? allMessages.length + 1: 1; this.props.createNewMessage (название, сообщение, пользователь, время, идентификатор); this.props.postNewMessage (this.props.singleMessage)} Я создаю одно сообщение с this.props.createNewMessage (название, сообщение, пользователь, время, Я бы); И после того, как я создаю это сообщение, я хочу, чтобы подтолкнуть весь объект в том состоянии, чтобы массив сообщений с: this.props.postNewMessage (this.props.singleMessage) Как работать с асинхронными и все «это» средами так что новое сообщение толкнуло в массив с postNewMessage будет иметь значение от новых значений singleMessage? Ниже, как я подключаю создать и postMewMessage: Const mapStateToProps = состояние => {{возвратные сообщения: state.messages.messages, название: state.singleMessage.title, сообщение: state.singleMessage.message, пользователь: state.singleMessage.user, время: state.singleMessage.time, singleMessage: state.singleMessage}} Const mapDispatchToProps = {createNewMessage, postNewMessage} экспорта по умолчанию подключаются (mapStateToProps,
Kaisin Li
1

голосов
0

ответ
17

Просмотры

Поймать несколько ответов XHR на нескольких page.click (без перезагрузки страницы или изменений)

page.on ( 'ответ', ответ => {// разрешить только XHR если ( 'XHR' == response.request () ResourceType ()) {возвращение;!.} console.log (response.url ()); }); ждут page.click ( '# первый пролет'); жду page.click ( '# пролета второго'); жду page.click ( 'пролет # третьего'); В результате приведенного выше примера, только Ajax запросы, соответствующие размаху # первый улавливаются page.on. Пролет # второй и третий пролет # не поймали. Использование page.waitForNavigation, кажется, не имеют никакого эффекта.
Timur Aminev
1

голосов
1

ответ
207

Просмотры

Java Запланированное Executor Тема вдаваясь в состояние ожидания

Таким образом, я пытаюсь реализовать базовый протокол асинхронной передачи сообщений от моего клиента Java Пойти сервер, используя два пользовательских потоки, с запланированным резьбовым исполнителем. Итак, я начинаю один TCP сокет из Java клиента Go сервер и установить читать и писать Буферы с обеих сторон. Автор Тема сохраняет уникальный идентификатор в сервер Redis, соответствующий каждый запрос, и написать запрос, используя PrintWriter на TCP сокете. WriterThread общественного класса WithdrawRequestWriter расширяет тему {частного статического окончательного ИНТ START_ACCOUNT_NO = 1; частный статический окончательный ИНТ END_ACCOUNT_NO = 2_000; частный статический окончательный ИНТ AMOUNT_TO_WITHDRAW = 100; частный PrintWriter писатель; частные Jedis Jedis; общественный WithdrawRequestWriter (PrintWriter писатель, Jedis Jedis) {this.writer = писатель; this.jedis = Jedis; } @Override общественного недействительный запуск () {Int I = 0; для (INT = AccountNo START_ACCOUNT_NO; AccountNo
ks2bmallik
1

голосов
1

ответ
29

Просмотры

Обновление пользовательского интерфейса из класса Java с методами асинхронный

Я пишу библиотеку, которая управляет связью между Android и BLE устройством. Соединение не синхронно. Я хочу, чтобы обновить ярлык в моей деятельности только тогда, когда связь изменение состояния с отключенного к связно, но я хочу, чтобы держать библиотеку отделенной от моего пользовательского интерфейса, так что я не хочу, чтобы в моем классе ссылки ярлыка для его обновления.
CryptHunter
1

голосов
0

ответ
423

Просмотры

Async functions in coffeescript

Я пытаюсь иметь функцию выполняться асинхронно, как следующий блок кода: asyncSearch = (е) -> Await поиск (е) $ ( «# основного поиска») на ( «вход», (е) ->. clearTimeout (delayTimer) delayTimer = SetTimeout (-> asyncSearch (е), 100)) #Method для поиска поиска = (вход) -> новый Promise (решительность) -> loadedAlbums = 40 toggleAlbum (родственный не определено) // больше кода. ... Это, однако, не компиляции, как я ожидаю, что это. Вместо этого он компилируется в: asyncSearch = функция (е) {возвращение ждать (поиск (е)); }; $ ( "# Основной поиск") на. ( "Вход", функция (е) {clearTimeout (delayTimer); возвращать delayTimer = SetTimeout (функция () {вернуть asyncSearch (е);}, 100);});
PorousBoat
1

голосов
1

ответ
42

Просмотры

Может nodejs цикла быть асинхронным?

В то время как этот код работает я не могу ничего сделать. Есть ли асинхронный способ петель? // Этот объект является очень большой вар listOfUsers = {}; для (ключа вара в listOfUsers) {удалить listOfUsers [ключ]}
SurSur
1

голосов
2

ответ
236

Просмотры

Приращение по одному с асинхронным ждут в узле Javascript

Как я могу получить результат от функции «три», чтобы console.log в функции «один»? один = асинхронные (число) => {console.log ( `мы получили $ {число}`) ждем два (числа) console.log ( 'числа три должно быть здесь')} два = асинхронным (число) => { номер ++ console.log ( `Я получил $ {номер}`) ждут три (число)} три = (число) => {номер ++ console.log ( `последнее, но не менее $ {число}`)} один (1)
Saibot
1

голосов
1

ответ
64

Просмотры

How to make Asynchronous code into synchronous - nodejs?

Это мой nodejs код апи: exports.createBusiness = (REQ, Рез) => {сопз бизнес = {имя: req.body.name}; Business.create (бизнес) .then (() => {createSchema () // эта функция, я вставил ниже .then (() => {console.log ( '6 >>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> ');});}) .catch ((ERR) => {console.log (' ERR:», ERR) ;}); }; Моя функция: Const createSchema = () => Business.findAll ({сырье: истинно,}). Затем ((данные) => {console.log ( '1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> '); data.forEach ((клиент) => {console.log (' 2 >>>>>>>>>>>>> >>>>>>>>>>>>>>> '); postgresDB.createSchema (client.code) .then (() => {console.log ( '3 >>>>>>>>>>>>>>>>>>>>>>>>>>>> '); Object.keys (postgresDB.models) .forEach ((CurrentItem) => {console.log (' 4 >>>>>>>>>>>>>>>>>>>>>>>> >>>> '); postgresDB.models [CurrentItem] .schema (client.code) .sync (); console.log (' 5 >>>>>>>>>>>>>>>>>>> >>>>>>>>> ');}); console.log (' Postgres схема создана ');}); }); .}) Улов ((ERR) => {console.log ( 'Внимание:', err.message);}); Мой выход приходит сейчас в консоли с помощью этого порядка: 1 2 2 2 2 2 2 2 2 2 6 3 4 5 Мой ожидается выход будет в консоли: (я должен выполнить синхронно): 1 2 2 2 2 2 2 2 2 2 3 4 5 6 Как сделать это, чтобы вести себя синхронно с использованием обещаний или обратных вызовов? Я попытался с promise.all, но не работаю, или асинхронный ждут хорошо справиться?
Ganesh Pandiyan
1

голосов
1

ответ
165

Просмотры

Как программно выбрать связанный `` NavigationViewItem` из NavigationView` после связывания обновляется

Моя установка в основном следующим образом: MenuItemsSource NavigationView является связан с viewModel.NavItems. NavItems является вычисляемым свойством ViewModel. Класс представления модели реализует INotifyPropertyChanged для обвязки назначения Книги зрения модели загружаются асинхронно. Что работает NavigationViewItems появляется после того, как страница будет достигнута. Проблема мне нужно установить указанный NavigationViewItem как SelectedItem в NavigationView. Но нет никакого NavigationViewItem (от ViewModel) использовать внутри OnNavigatedTo (NavigationEventArgs е), потому что в этой точке viewModel.NavItems еще не готов. Так есть шаблон для выбора NavigationViewItem в этой асинхронной ситуации? XAML ... вид модели внутренний класс MainPageViewModel: INotifyPropertyChanged {публичное мероприятие PropertyChangedEventHandler PropertyChanged; // Служба данных частных MainDataService mainDataService = новый MainDataService (); частные Список книг = новый список (); Публичный список книг {получить {возвращение this.books; } Множество {this.books = значение; this.OnPropertyChanged (); this.OnPropertyChanged ( "NavItems"); }} Общественные IEnumerable NavItems {получить {вернуться Books.SelectMany (Ь => (новый список {новый NavigationViewItemHeader {Content = b.Title, Tag = b.Title}}) .Concat (b.Sections.Select (s => новый NavigationViewItem {Content = Подзаг, Icon = новый FontIcon {Символ = "\ uE8B7", FontFamily = новый FontFamily ( "Segoe MDL2 активы")}}))); }} // @param selectedBookIndex: индекс книги, первый раздел // должен быть выбран. общественного асинхронной Task UpdateBooks (INT selectedBookIndex) {ждут mainDataService.PrepareData (); this.Books = mainDataService.Books; } ...} )}}))); }} // @param selectedBookIndex: индекс книги, первый раздел // должен быть выбран. общественного асинхронной Task UpdateBooks (INT selectedBookIndex) {ждут mainDataService.PrepareData (); this.Books = mainDataService.Books; } ...} )}}))); }} // @param selectedBookIndex: индекс книги, первый раздел // должен быть выбран. общественного асинхронной Task UpdateBooks (INT selectedBookIndex) {ждут mainDataService.PrepareData (); this.Books = mainDataService.Books; } ...}
LShi
1

голосов
1

ответ
81

Просмотры

асинхронное нарушение протокола перемещения и / или соединение потерянно ONVIF

Некоторые предпосылки информация о: Я в настоящее время делаю C # Windows Form приложения с помощью Visual Studio 2017 и с использованием .wsdl ONVIF (OnvifMedia10 и OnvifPTZService). У меня есть доступ администратора к целевой камере. Я получил профиль из mediaClient я создал: Var mediaEndPointAddress = новый EndpointAddress ($ "HTTP: // {cameraAddress} / ONVIF / СМИ"); вар mediaEncoding = новый TextMessageEncodingBindingElement {MessageVersion = MessageVersion.CreateVersion (EnvelopeVersion.Soap12, AddressingVersion.None)}; вар mediaBinding = новый HttpTransportBindingElement {AuthenticationScheme = AuthenticationSchemes.Digest}; вар mediaCustomBinding = новый CustomBinding (mediaEncoding, mediaBinding); вар mediaPasswordDigestBehavior = новый PasswordDigestBehavior (имя пользователя, пароль); mediaClient = новый MediaClient (mediaCustomBinding, mediaEndPointAddress); mediaClient. Endpoint.EndpointBehaviors.Add (mediaPasswordDigestBehavior); вар Profs = mediaClient.GetProfiles (); Профиль = mediaClient.GetProfile (Profs [0] .token); PasswordDigestBehavior является частью какой-то код, который я нашел по этой ссылке. Я использовал ту же методологию, чтобы получить ptzClient и это конфигурация: ... уаг ptzEndpointAddress = новый EndpointAddress ($ "HTTP: // {cameraAddress} / ONVIF / PTZ"); ptzClient = новый PTZClient (commonCustomBinding, ptzEndpointAddress); ptzClient.Endpoint.EndpointBehaviors.Add (commonPasswordDigestBehavior); вар конфиги = ptzClient.GetConfigurations (); Варианты = ptzClient.GetConfigurationOptions (конфига [0] .token); Затем я создал переменную PTZSpeed ​​держать так, как я хочу, чтобы моя камера для перемещения: скорость = новый OnvifPTZService.PTZSpeed ​​(); velocity.PanTilt = новый OnvifPTZService.Vector2D (); velocity.Zoom = новый OnvifPTZService. Vector1D (); Мой вопрос: Когда я хочу, чтобы повернуть целевую камеру, я использую какую-PanLeft функцию (): общественная пустота PanLeft () {если (инициализирован && CanPanTilt) {velocity.PanTilt.x = options.Spaces.ContinuousPanTiltVelocitySpace [0]. XRange.Min; velocity.PanTilt.y = 0; ptzClient.ContinuousMoveAsync (profile.token, скорость, "PT5S"); }} И остановить камеру, я меняю обратно velocity.PanTilt.x и velocity.PanTilt.y к нулю, перед отправкой другого запроса асинхронного перемещения. Через пару шага / стоп, я продолжаю терять связь с моей камерой ... Интересно, если это потому, что я делаю слишком много асинхронного запросов в то же самое время или что-то ... Сначала я думал, что проблема была с моей сетью, так как Я подключения к камере через Wi-Fi,
LoukMo
1

голосов
1

ответ
126

Просмотры

Извлечь часть кода из асинхронных / ОЖИДАНИЯ блока в отдельную функцию

У меня есть асинхронной анонимной самоосуществляющейся функция. Слово «асинхронный» до функции означает, что функция всегда возвращает обещание. Если код возврата в него, то JavaScript автоматически оборачивает его в разрешенном обещание с этим значением. Это асинхронное позволяет использовать «ждать». Ключевое слово Await делает JavaScript ждать, пока это обещание не оседает и возвращает результат. Таким образом, выполнение функции «пауза» и возобновляется, когда обещание оседает. Это не будет стоить каких-либо ресурсов процессора, так как двигатель может выполнять другие работы, тем временем: выполнять другие сценарии, обработки событий и т.д. (асинхронная () => {ждут page.goto ( «test.com», {waituntil: [ 'нагрузки », 'DOMContentLoaded', 'networkidle0']}); ждут page.evaluate ((пользователь, передать) => {document.querySelector ( '# пользователя') SetAttribute. ( 'значение', пользователь); }, Пользователь, проход) ждут page.click ( 'кнопку [тип = представить] .btn первичной'); для (вар я = 0; г <10; я ++) {попробовать {ждут page.goto ( 'test.com/second', {waituntil: [ 'нагрузки', 'DOMContentLoaded', 'networkidle0']}); } Поймать (е) {Await page.goto ( 'test.com', {waituntil: [ 'нагрузки', 'DOMContentLoaded', 'networkidle0']}); ждут page.evaluate ((пользователь, передать) => {document.querySelector ( '# пользователя') SetAttribute ( 'значение', пользователь);.}, пользователь, проход) ждут page.click ( 'Кнопка [тип = представить] .btn первичной '); } // больше материала не имеет значения здесь}}) (); Но, как вы можете видеть выше, у меня есть повторяющийся код. Я хочу, чтобы извлечь код дубликата в отдельную функцию. Что-то вроде этого: (асинхронная () => {Логин () для (вар я = 0; я <10; я ++) {попробуйте {ждать page.goto ( 'test.com/second', {waituntil: [ 'нагрузки' , 'DOMContentLoaded', 'networkidle0']});} поймать (е) {Логин ()} // больше материала не имеет значения здесь}}) (); Функция Войти () {Await page.goto ( 'test.com', {waituntil: [ 'нагрузки', 'DOMContentLoaded', 'networkidle0']}); ждут page.evaluate ((пользователь, передать) => {document.querySelector ( '# пользователя') SetAttribute ( 'значение', пользователь);.}, пользователь, проход) ждут page.click ( 'Кнопка [тип = представить] .btn первичной '); } Тем не мение, это не будет работать, потому что ждут работает только внутри Асинхронный. Теперь одна идея состоит в том, чтобы поместить ждать перед вызовом Логин, как это: ОЖИДАНИЕ Войти () Но вот в чем дело. Внутри этой функции Войти, я намеренно использовать жду 3 раза, потому что мне нужно одно заявление, чтобы быть решено до следующего. Как я могу добиться этого? Использование асинхронного / ждать и использовать свою функцию Логина?
Donato
1

голосов
0

ответ
11

Просмотры

Вызов зависимых методы синхронно в JavaScript [дубликат]

Этот вопрос уже есть ответ здесь: Как вернуть ответ от асинхронного вызова? 34 ответов Почему моя переменная неизмененном после того как я изменить его внутри функции? - Асинхронный код ссылки 6 ответов у меня есть 3 метода, как показано ниже. _uploadImages () принимает изображения массив объектов. Я хочу _uploadImages () для завершения первого и возвращает все адреса из загруженных изображений. Тогда я хочу, чтобы передать эти адреса другому методу, чтобы сохранить на другом сервере. Но проблема _uploadImages () возвращает пустой массив сразу. _uploadImages (изображения) {пусть imageUrls = []; images.map ((изображение, индекс) => {пусть FormData = новый FormData (), пусть файл = {URI: image.path, введите: image.mime, имя: image.path. подстрока (image.path.lastIndexOf ( '/') + 1) размер: image.size} formData.append ( 'файл', файл); formData.append ( 'большой палец', 'вопросы'); апи .uploadImage (FormData) .then ((ответ) => {если (response.data = NULL) {пусть IMG = {имя: 'Image' + (индекс ++), URL: response.data.body.file , тип: 'изображения'}; imageUrls.push (IMG);} //console.log(imageUrls);}) .catch ((ошибка) => {console.log (ошибка);}); }); вернуть JSON.stringify (imageUrls); } _SaveQuestion (PostData) {console.log (PostData); апи .postQuestion (PostData) .then ((ответ) => {console.log (ответ);}) .catch ((ошибка) => {console.log (ошибка);}); } _OnQuestionFormSubmit () {пусть изображения = this.state.images; пусть imageUrls = this._uploadImages (изображения); console.log (imageUrls); пусть PostData = {Mediaş: imageUrls} this._saveQuestion (PostData); } Может кто-нибудь дать некоторое представление об этом? console.log (imageUrls); пусть PostData = {Mediaş: imageUrls} this._saveQuestion (PostData); } Может кто-нибудь дать некоторое представление об этом? console.log (imageUrls); пусть PostData = {Mediaş: imageUrls} this._saveQuestion (PostData); } Может кто-нибудь дать некоторое представление об этом?

Просмотр дополнительных вопросов