Ayrat
Так мы кода бота не видели
да вроде скинули выше же
Nikolay
Чё, хттп клиент говорите тормозит?
Vladislav
Вообще шарповая либа держит один хттп клиент
Ayrat
Чё, хттп клиент говорите тормозит?
берёшь фидлер, ебашишь боту 1000 запросов и смотришь
Vladislav
Которая самая популярная
Ayrat
как они в очередь выстраиваются
Ayrat
особенно заметно если каждый коннект будет лить по 100мб
Nikolay
А не может быть траблов из-за newtonsoft.json
Nikolay
Ибо там один экземпляр используется
Nikolay
Мб он как-то лочится
Vasily
Один экземпляр провайдера?
Ayrat
Мб он как-то лочится
ты не хочешь всё же про сетевые коннекты подумать?
Nikolay
Как вариант
Ayrat
https://docs.microsoft.com/en-US/dotnet/api/system.net.servicepointmanager.defaultconnectionlimit
Ayrat
Any changes to the DefaultConnectionLimit property affect both HTTP 1.0 and HTTP 1.1 connections. It is not possible to separately alter the connection limit for HTTP 1.0 and HTTP 1.1 protocols. When used in the server environment (ASP.NET) DefaultConnectionLimit defaults to higher number of connections, which is 10.
Vladislav
https://docs.microsoft.com/en-US/dotnet/api/system.net.servicepointmanager.defaultconnectionlimit
Мне казалось с ним что-то в неткоре делали
Nikolay
https://github.com/Dolfik1/Funogram/blob/master/Funogram/Tools.fs#L41
Nikolay
Вот так
Vladislav
Хз, но в голове есть что-то про изменения
Nikolay
https://github.com/Dolfik1/Funogram/blob/master/Funogram/Tools.fs#L118
Nikolay
Вот тут поглядите, мб что-то заметите
Vasily
Инлайн, не?
Nikolay
Инлайн?
Ayrat
стоп, а что это вообще такое
Ayrat
async { let url = getUrl token methodName if param.IsNone || param.Value.Length = 0 then return client.GetStringAsync(url) |> Async.AwaitTask |> Async.RunSynchronously |> parseJson<'a>
Ayrat
async { Async.RunSynchronously }
Nikolay
Это не я
Vasily
Глазастый
Nikolay
Это рыба писала
Vasily
Нефиг
Ayrat
это прям заявка на успех
Vasily
А чем просто AwaitTask не подошел?
Ayrat
Так это в самом главном методе - хттп реквест
Vasily
И return!
Ayrat
прям нормальный такой блок треда
Ayrat
как в старые добрые
Nikolay
И return!
Не, там parsejson
Vasily
Тогда let!=
Vasily
Потом Parsejson
Vasily
Потом return
Vasily
Ye b yb;t nfv
Vasily
Ну и ниже там
Ayrat
let result = client.PostAsync(url, form) |> Async.AwaitTask |> Async.RunSynchronously return parseJson<'a> (result.Content.ReadAsStringAsync() |> Async.AwaitTask |> Async.RunSynchronously)
Vasily
let result = client.PostAsync(url, form) |> Async.AwaitTask |> Async.RunSynchronously return parseJson<'a> (result.Content.ReadAsStringAsync() |> Async.AwaitTask |> Async.RunSynchronously)
Ayrat
да там вообще нормально намазано
Ayrat
синхронных блоков
Vasily
КОПИПАСТ
Ayrat
прям посреди асинхронной монады
Nikolay
Nikolay
Так?
Ayrat
ну да
Vasily
УГу
Vasily
Но парс тоже можно в асинк завернуть
Nikolay
Щас чуть отрефакторю
Vasily
Ты там ниже тоже
Vasily
Убей нах
Ayrat
короче, во всем кода должен быть один Async.RunSynchronously, где-то в районе функции main
Ayrat
прям ctrl-f и убирай все Async.RunSynchronously
Vasily
Async.Start же
Ayrat
Async.Start же
тогда main выйдет!
Ayrat
и конец программе)))
Vasily
Токен жди
Ayrat
ну ждать всё равно что-то надо
Vasily
Мейлбокс
Vasily
Норм тема, отвечаю
Hog
Мейлбокс
Василий, а ты настойчивый )
Ayrat
Это его Акка укусила!
Ayrat
скоро мы ему прививку гопака сделаем
Ayrat
:D
Vasily
Это его Акка укусила!
Акка - следующий этап
Hog
:D
я даже догадываюсь - чем :)
Vasily
War hopac
Hog
War hopac
Капоэйра!
Nikolay
RunSynchronously остаётся в паре мест
Nikolay
https://github.com/Dolfik1/Funogram/blob/master/Funogram/Bot/Bot.fs#L78
Nikolay
Думаю тут можно оставить
Vasily
Бля, тут в соседнем чате скинули ссылку, какой-то транс на скала дейз рассказывает про спарк