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

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

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

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

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

32 ответов

42 просмотра

Zip?

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

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

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

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

Alexander- Автор вопроса

если ты пишешь в 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
Да с разных сервисов

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

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

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

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

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

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

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

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

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта