Plugins to support controlling multiple configuration points at once
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
調査の方向性
実装対象を選ぶ前に、issue にリンクされている SDK ごとのチケット、特に Python issue 950 と pull request 1011 を確認してください。すでに作業が進行している SDK を比較してください。完了とするには、plugin モデルが決定され、SDK 固有のサポートが連携して実装されている必要があり、単独の変更だけでは不十分です。
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem? Please describe.
Users often need to configure a number of things in order to support certain systems. For instance, all workflows at Company X might need to register a dataconverter, customize the sandbox, register a set of activities, etc.
Describe the solution you'd like
A plugin model to allow configuring all these points at once.
# In client (would rather have this on client.Interceptor, but people
# are concerned with the name "interceptor" though I prefer it)
class Plugin:
# NOTE: ClientConnectConfig could help at https://github.com/temporalio/sdk-python/pull/895
async def connect_client(self, config: ClientConnectConfig, next: Plugin) -> Client:
# Default impl calls next
def create_client(self, config: ClientConfig, next: Plugin) -> Client:
# Default impl calls next
# In worker (would rather have this on worker.Interceptor, but people
# are concerned with the name "interceptor" though I prefer it)
class Plugin:
def create_worker(self, config: WorkerConfig, next: Plugin) -> Worker:
# Default impl calls next
async def run_worker(self, worker: Worker, next: Plugin) -> None:
# Default impl calls next
For example:
class MyPlugin(client.Plugin, worker.Plugin, client.Interceptor, worker.Interceptor):
def create_client(self, config: ClientCreateConfig, next: Plugin) -> Client:
# Say you want to set data converter and interceptor
config["data_converter"] = MyDataConverter()
config["interceptors"].append(self)
return super().create_client(config, next)
def create_worker(self, config: WorkerCreateConfig, next: Plugin) -> Worker:
# Say you want an activity
config["activities"].append(MyActivity())
return super().create_worker(config, next)
async def run_worker(self, worker: Worker, next: Plugin) -> None:
try:
await super().run_worker(worker, next)
finally:
# Say you want to do something on worker shutdown
do_some_cleanup()
def intercept_activity(self, next: ActivityInboundInterceptor) -> ActivityInboundInterceptor:
# Say you want to intercept activities
return MyActivityInterceptor(next)
Additional context
Per-SDK Tickets
- Go - https://github.com/temporalio/sdk-go/issues/2020
- Java - https://github.com/temporalio/sdk-java/issues/2626
- Core - N/A
- TypeScript - https://github.com/temporalio/sdk-typescript/issues/1764
- Python - https://github.com/temporalio/sdk-python/issues/950 and https://github.com/temporalio/sdk-python/pull/1011
- .NET - https://github.com/temporalio/sdk-dotnet/issues/507
- Ruby - https://github.com/temporalio/sdk-ruby/issues/318
- PHP - https://github.com/temporalio/sdk-php/issues/644
- Temporal CLI - N/A
- 主要言語
- Go
- スター
- 32
- フォーク
- 28
- 平均マージ
- 1日 14時間
- マージ済み PR(30日)
- 6
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
temporalio/features のほかの issue
-
Add Rust SDK support再び着手できるかも @chris-olszewski が 48 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンenhancement
temporalio/features#864 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
temporalio/features#854 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
temporalio/features#850 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
temporalio/features#845 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
temporalio/features#827 ·
メンテナーはふだん 1 日以内に返信
temporalio/features の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
rossoctl/context-guru#346 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
prime-radiant-inc/evener#2883 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
gravitational/teleport#69805 ·
メンテナーはふだん 11 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
Under Poisson sampling, the `PLDAccountant` composes the inner event both before and after samplingオープン
難易度 2/5 半日 初心者へのやさしさ 78/100
google/differential-privacy#496 ·