170 похожих чатов

Ребят имеется реализация метода который принимает стрим по grpc и

сохраняет его в монгу

public override async Task<PutObjectReply> PutObjectInBucket(IAsyncStreamReader<PutObjectRequests> requestStream, ServerCallContext context)

но проблема возникает тогда, когда сюда летит большое количество файлов одновременно допустим 20 000
вопрос: как праивльно их сохранить? есть предчувствие что это должно быть не 20 000 стримов а один стримно тогда как это реализовать?
сделать из 20к файлов один большой стрим и как его развернуть потом при сохранении ?

32 ответов

88 просмотров

Zip?

А в чем проблема возникает. Сформулируешь?

что такое летит 20000 файлов?

Alexander- Автор вопроса
Nick M.
А в чем проблема возникает. Сформулируешь?

от коннектов пухнет, исключения кидает

если ты пишешь в S3 то можно файл не приниматьв память, а стримить его напрямую в S3

Alexander- Автор вопроса
Ilya Chernoudov
какие исключения?

System.ArgumentNullException: Value cannot be null. (Parameter 'value') at Google.Protobuf.ProtoPreconditions.CheckNotNull[T](T value, String name) at SP.FileStorage.Service.API.RemoveObjectRequest.set_Link(String value) например вот

Alexander
System.ArgumentNullException: Value cannot be null...

выглядит как ошибка формата

Alexander- Автор вопроса
Ilya Chernoudov
выглядит как ошибка формата

она происходит при Task.WhenAll() если разом начать засылать стримы, а если по одному то все будет ок

если сервис не справляется, самое время воткнуть кафку

Видимо, тебе нужен стримовый запрос, а не отдельные запросы. https://learn.microsoft.com/ru-ru/aspnet/core/grpc/client?view=aspnetcore-7.0

Alexander
System.ArgumentNullException: Value cannot be null...

Это выглядит как ты в Link пытаешься null присвоить, проверь какие там у тебя присвоения и когда, может race обычный или просто ошибки обработки

Alexander- Автор вопроса
Ayrat Hudaygulov
если сервис не справляется, самое время воткнуть к...

Мне нужно не отказываясь от GRPC как то реализовать так, что бы стрим шел один и сохраняло файлы верно

Nick M.
Это выглядит как ты в Link пытаешься null присвоит...

Если что в .NET probuf string нельзя писать null, если надо undefined сделать, то используй clear()

Alexander
Мне нужно не отказываясь от GRPC как то реализоват...

https://learn.microsoft.com/ru-ru/aspnet/core/grpc/performance?view=aspnetcore-7.0 Ну вот тут описано. По идее там вообще одно соединение нужно для одного клиента, потому как нафига их несколько? Они мультиплексируются по HTTP2

Alexander
Мне нужно не отказываясь от GRPC как то реализоват...

не понимаю, зачем тебе стрим grpc для файлов?

Alexander- Автор вопроса
Ilya Chernoudov
не понимаю, зачем тебе стрим grpc для файлов?

Потому что есть сервис файлстораджа, на который по grpc файлы отправляются с других сервисов

Alexander
Потому что есть сервис файлстораджа, на который по...

это хорошо, зачем grpc stream, стримы же для реалтайм обновлений юзают обычно

Alexander
А как файлы слать?

у тебя много маленьких файлов?

Alexander- Автор вопроса
Alexander
Да с разных сервисов

да просто обычным вызовом на эндпоинт, без стримов

Alexander- Автор вопроса
Ilya Chernoudov
да просто обычным вызовом на эндпоинт, без стримов

Так… и что там в аргументе будет ? Пейлоад со стримом ?

Alexander
Так… и что там в аргументе будет ? Пейлоад со стри...

просто пэйлоад, а как его считать — это уже второй вопрос

Alexander- Автор вопроса
Ilya Chernoudov
просто пэйлоад, а как его считать — это уже второй...

Так в этом и вопрос как не делать кучу пейлодов а заслать в виде одного ? Получается 1 файл == 1 пейлоад

Alexander
Так в этом и вопрос как не делать кучу пейлодов а ...

Вот такое вполне себе живет и нормально используется

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта