Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Support the binary store API (alpha) from Dapr 1.19

オープン
#1,296 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
grpc, python
領域
api, backend

調査の方向性

Start by regenerating the protos with tools/regen_grpcclient.sh (DAPR_BRANCH=release-1.19) and confirm binarystore.proto appears. Then study the existing gRPC methods in dapr/clients/grpc/client.py and dapr/aio/clients/grpc/client.py to see how client-streaming and server-streaming calls are wrapped. Done means set, get and delete *_alpha1 methods exist in both clients, with tests and an examples/ app that uses binarystore.in-memory.

索引モデルが issue の本文から書いたものです。

説明

help wanted kind/enhancement

Summary

Dapr 1.19 adds the binary store building block as an alpha API. An app uses it to store, read and delete files as byte streams through a binary store component. The Python SDK has no client API for it yet. The .NET SDK already supports it, so its implementation is a reference for this work.

Runtime API

gRPC, in the Dapr service (binarystore.proto):

  • SetBinaryFileAlpha1 is a client stream. The first message must contain initial_request with component_name, file_name and overwrite, and it must arrive within 5 seconds. Each later message contains one payload chunk (common.v1.StreamPayload). Its seq starts at 0 and goes up by 1 for each chunk. If overwrite is false (the default), the call fails when the file exists. If overwrite is true, the call replaces the file.
  • GetBinaryFileAlpha1 returns a server stream of payload chunks of up to 32 KiB, with seq from 0.
  • DeleteBinaryFileAlpha1 is a unary call.

HTTP, on /v1.0-alpha1/binarystore/{name}/{fileName}:

  • PUT stores the request body and replaces an existing file.
  • POST stores the request body, and returns 409 if the file exists.
  • GET returns the file as application/octet-stream.
  • DELETE deletes the file.

Components in 1.19: binarystore.aws.s3, binarystore.azure.blobstorage, binarystore.azure.datalake, binarystore.gcp.bucket, binarystore.oci.objectstorage and binarystore.in-memory.

Reference: the .NET SDK

  • dapr/dotnet-sdk#1933 (merged) adds the Dapr.BinaryStore.* packages. IDaprBinaryStoreClient has these methods:
    • SetBinaryFileAsync, from a stream or a byte buffer, with overwrite and a 32 KiB default chunk size
    • GetBinaryFileChunksAsync, GetBinaryFileAsync (to a stream) and GetBinaryFileBytesAsync
    • DeleteBinaryFileAsync
  • dapr/dotnet-sdk#1935 (in review) adds an example app.
  • dapr/docs#5388 (in review) adds the .NET SDK docs.

Related links: the proposal (dapr/proposals#88), the runtime implementation (dapr/dapr#10367) and the components (dapr/components-contrib#4559 and dapr/components-contrib#4637). dapr/dotnet-sdk#1934 stores workflow data references in the binary store. That is a separate feature (dapr/dapr#8706), and it is not part of this issue.

Scope

  • Generate the protos from Dapr 1.19 with tools/regen_grpcclient.sh (for example DAPR_BRANCH=release-1.19). The script takes every runtime/v1 proto, so it picks up binarystore.proto. main and release-1.19 do not have it yet.
  • Add set, get and delete *_alpha1 methods to the sync client (dapr/clients/grpc/client.py) and the async client (dapr/aio/clients/grpc/client.py). Set takes bytes or a file-like object and an overwrite flag. Get returns bytes or an iterator of chunks.
  • Send the upload chunks in order after the initial request, with seq from 0.
  • Add tests, and an example in examples/ that uses the binarystore.in-memory component.
  • Add docs to the Python SDK section of dapr/docs.

The API is alpha, so its names and behavior can change in a later release.

主要言語
Python
スター
274
フォーク
157
平均マージ
5日 20時間
マージ済み PR(30日)
71

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

dapr/python-sdk のほかの issue

dapr/python-sdk の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。