Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

rb_zenoh

rb_zenoh는 Zenoh 기반의 공통 통신 패키지입니다. 주요 기능은 publish/subscribe, query/queryable, ZenohRouter 데코레이터 라우팅입니다.

설치/의존성

  • Python: >=3.12,<3.13
  • 패키지 의존성: flatbuffers, psutil, rb_utils, rb_modules
  • _core native extension은 패키지 설치 중 빌드하지 않습니다. 필요 플랫폼용 _core*.so/_core*.pyd를 먼저 생성한 뒤 패키지에 포함합니다.
# 현재 host용
bash scripts/backend/build_cpp_core.sh zenoh

# Docker/Linux용
RB_CPP_CORE_TARGETS="linux/amd64 linux/arm64" bash scripts/backend/build_cpp_core.sh zenoh

배포용 rainbow-rb-zenoh은 fat wheel을 만들지 않고 플랫폼별 wheel로 분리합니다. 각 wheel에는 해당 플랫폼의 _core artifact 하나만 포함됩니다.

핵심 객체

  • ZenohClient: 저수준 통신 API
  • ZenohRouter: 데코레이터 기반 라우터
  • SubscribeOptions: subscribe 동작 옵션

1) publish

from rb_zenoh.client import ZenohClient

client = ZenohClient()
client.publish("muscat/sample/topic", payload={"ok": True})

FlatBuffer 요청 publish:

from rb_flat_buffers.IPC.Request_MotionPause import Request_MotionPauseT

req = Request_MotionPauseT()
client.publish(
    "C500920/call_pause",
    flatbuffer_req_obj=req,
    flatbuffer_buf_size=64,
)

2) subscribe

from rb_zenoh.client import ZenohClient
from rb_zenoh.schema import SubscribeOptions

client = ZenohClient()

async def on_msg(*, topic, mv, obj_payload, dict_payload, attachment):
    print(topic, obj_payload, dict_payload, attachment)

client.subscribe(
    "muscat/sample/topic",
    on_msg,
    options=SubscribeOptions(dispatch="immediate"),
)

콜백 시그니처:

  • topic: topic 문자열
  • mv: raw payload(memoryview)
  • obj_payload: flatbuffer_obj_t=<FlatBuffer T class> 파싱 객체 (T | None)
  • dict_payload: flatbuffer_obj_t 유무와 무관하게 dict 변환 결과 (dict | None)
  • attachment: sender, sender_id 정보

3) queryable

def on_query(req=None, params=None):
    return {"status": "ok"}

client.queryable("muscat/sample/query", on_query)

콜백 인자 의미:

  • req: query payload 본문
    • flatbuffer_req_t/flatbuffer_req_T_class를 지정한 경우에만 주입됩니다.
    • 내부에서 InitFromPackedBuf(...)로 파싱한 FlatBuffer ...T 객체입니다.
    • 요청 payload가 없는데 flatbuffer_req_t를 지정하면 에러가 발생합니다.
  • params: query parameter
    • 내부 q.parameters 값을 dict[str, str] 형태로 주입합니다.
    • payload(req)와 별도로 필터/옵션 전달에 사용합니다.

주의사항:

  • 콜백 파라미터 이름이 정확히 req, params일 때만 자동 주입됩니다.
  • request, query_params 같은 다른 이름으로 선언하면 주입되지 않습니다.
  • 둘 다 선언하지 않으면 인자 없이 호출됩니다.

4) query_one / query_all

query_one

res = client.query_one("muscat/program/state", timeout=0.3)
print(res.get("dict_payload"))
  • 첫 응답 1개만 반환
  • 응답이 없으면 ZenohNoReply 예외

query_all

res_list = client.query_all("*/health", timeout=0.5)
for item in res_list:
    print(item.get("key"), item.get("dict_payload"))
  • timeout 내 도착한 응답을 모두 list로 반환
  • 응답이 없어도 빈 리스트 반환

언제 무엇을 쓸지

  • 단일 대상 호출: query_one
  • 와일드카드/다중 서비스 수집: query_all

FlatBuffer 파라미터 상세

flatbuffer_req_obj

  • 의미: 요청으로 보낼 FlatBuffer 객체(Pack() 가능한 객체)
  • 사용 위치: publish, query_one, query_all
  • 내부 동작: builder로 pack 후 bytes payload 전송

flatbuffer_buf_size

  • 의미: FlatBuffer 직렬화 builder 초기 버퍼 크기
  • 사용 위치:
    • 요청 직렬화: publish, query_one, query_all
    • queryable 응답 직렬화: queryable(..., flatbuffer_res_buf_size=...)
  • 너무 작으면 직렬화 실패 가능
  • 권장: 64/128/256/512부터 시작해 payload 크기에 맞게 상향

flatbuffer_res_T_class

  • 의미: 응답 payload를 어떤 FlatBuffer 타입으로 파싱할지 지정
  • 사용 위치: query_one, query_all
  • 타입: FlatBuffer Object API 클래스(T 클래스) 를 넘겨야 함
    • 예: Response_FunctionsT, State_CoreT
    • 보통 이름이 ...T로 끝나는 클래스
    • 내부적으로 InitFromPackedBuf(...)를 통해 파싱됨
  • 결과:
    • 지정 시: obj_payload에 파싱 객체
    • 미지정 시: dict_payload/raw payload 중심 사용

예시:

from rb_flat_buffers.IPC.Request_MotionPause import Request_MotionPauseT
from rb_flat_buffers.IPC.Response_Functions import Response_FunctionsT

res = client.query_one(
    "C500920/call_pause",
    flatbuffer_req_obj=Request_MotionPauseT(),
    flatbuffer_res_T_class=Response_FunctionsT,
    flatbuffer_buf_size=64,
    timeout=0.3,
)
obj = res.get("obj_payload")

5) ZenohRouter 사용

from rb_zenoh.router import ZenohRouter

router = ZenohRouter(prefix="muscat/common")

@router.subscribe("health")
async def on_health(*, topic, obj_payload, dict_payload, attachment):
    pass

@router.queryable("echo")
async def on_echo(params=None):
    return {"ok": True}

라이프사이클:

  • 시작 시 await router.startup()
  • 종료 시 await router.shutdown()

예외/주의사항

  • query_one no-reply: ZenohNoReply
  • transport 재연결 계열: ZenohTransportError
  • ZenohClient는 프로세스 단위 싱글톤이므로 불필요한 잦은 close() 호출은 피하는 것을 권장

Metadata

Release files for rainbow-rb-zenoh 0.1.2.dev4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for rainbow-rb-zenoh 0.1.2.dev4
File Actions
rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-win_amd64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_x86_64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.35+ ARM64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_aarch64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-win_amd64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_x86_64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.35+ ARM64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_aarch64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-win_amd64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ x86-64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_x86_64.whl
rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.35+ ARM64 Details for rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_aarch64.whl

Total release size: 53.1 MB

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-win_amd64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-win_amd64.whl
Size 6.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
88b68c15b6018c3f4bc9de5a1308902cd68f7f88c5f821a47a689178366df20f
BLAKE2b-256 checksum
How to use checksums
e834c7eac0830dc34cbfe276e0484b1eaac5127f04a92ad9bd25f3d2e0382c78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_x86_64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_x86_64.whl
Size 6.0 MB
Tags CPython 3.13 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
66ef47ea17d2bdfb0b7466eead4d011be15d1b8618fbe600803e3dde72ff897e
BLAKE2b-256 checksum
How to use checksums
43255f211b29d15236d780a4149aca1f5d2de3c928a684ff91a6efa9334166b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_aarch64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp313-cp313-manylinux_2_35_aarch64.whl
Size 5.7 MB
Tags CPython 3.13 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
29e438004d4cdad6e4d4504415de07a18f5ed1c075519eeea2d6548af5c4952e
BLAKE2b-256 checksum
How to use checksums
a52cdb1241e3bb529a7f13d093165c086a278d45e3c3048613b074d8e976f6c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-win_amd64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-win_amd64.whl
Size 6.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
ba0fabcd35b05ee4f8cb12f4f1b41c4d6d4989cb28cab78d3ef336d36745a2b9
BLAKE2b-256 checksum
How to use checksums
17829a6c6ef006e236802d8262fb03100e39aeb7eeff48cc4e73f8944c9bc82b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_x86_64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_x86_64.whl
Size 6.0 MB
Tags CPython 3.12 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
936bf91bdce99563631eb2ff5090472cebc621f6db0e566d706830490f16901f
BLAKE2b-256 checksum
How to use checksums
85f338f57064fee3f7d3f292a9aae2495ec12a15d5b2dc14ffc87f26d64373a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_aarch64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp312-cp312-manylinux_2_35_aarch64.whl
Size 5.7 MB
Tags CPython 3.12 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
b85e88fc8af09cb24ad2f2f453b8889926a9a7a74a5ad002326e54d5498e1305
BLAKE2b-256 checksum
How to use checksums
79c9938beacf11e6212edb49a56370c5505b04367fff9f26cd2f3cad7764b7a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-win_amd64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-win_amd64.whl
Size 6.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b567b882fa0066a44d6d2cf706bdbe8da688b6e0e67362e430453812852083fb
BLAKE2b-256 checksum
How to use checksums
cdbcbe962b5deade845f63eeeecc3a9e2d2bdfe6676cd5fdbd1473c9f14f614d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_x86_64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_x86_64.whl
Size 6.0 MB
Tags CPython 3.11 Linux glibc 2.35+ x86-64
SHA-256 checksum
How to use checksums
52e5702e7c5b68f0948152d9484856151fe9469b2999fab23f1ed5336abed6f8
BLAKE2b-256 checksum
How to use checksums
5dc89302bc34990613f83b1bff1b510c6037f07cd9956f3e89bbf6678246f9a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_aarch64.whl

Download URL rainbow_rb_zenoh-0.1.2.dev4-cp311-cp311-manylinux_2_35_aarch64.whl
Size 5.7 MB
Tags CPython 3.11 Linux glibc 2.35+ ARM64
SHA-256 checksum
How to use checksums
2f6c1d185a4222fb1c9437f25aba3d254665f1ef8699767ac44772f2c8f0f594
BLAKE2b-256 checksum
How to use checksums
07b10724d1325183e0d6bd289a281955dcc61fec545ca52a95336728b3f10a4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for rainbow-rb-zenoh 0.1.2.dev4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page