Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Almost working tiled insertion #781

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add minimal configuration for inserting documents into Tiled
DiamondJoseph committed Dec 13, 2024
commit b7cbcfc153438453a46507a586fb30f20dd6cfe6
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -13,6 +13,10 @@ classifiers = [
]
description = "Lightweight bluesky-as-a-service wrapper application. Also usable as a library."
dependencies = [
"tiled",
"json_merge_patch",
"jsonpatch",
"pyarrow",
"bluesky>=1.13",
"ophyd",
"nslsii",
10 changes: 10 additions & 0 deletions src/blueapi/config.py
Original file line number Diff line number Diff line change
@@ -40,6 +40,15 @@ class StompConfig(BaseModel):
auth: BasicAuthentication | None = None


class TiledConfig(BaseModel):
"""
Config for connecting to a tiled instance
"""

uri: str
api_key: str


class WorkerEventConfig(BlueapiBaseModel):
"""
Config for event broadcasting via the message bus
@@ -138,6 +147,7 @@ class ApplicationConfig(BlueapiBaseModel):
"""

stomp: StompConfig | None = None
tiled: TiledConfig | None = None
env: EnvironmentConfig = Field(default_factory=EnvironmentConfig)
logging: LoggingConfig = Field(default_factory=LoggingConfig)
api: RestConfig = Field(default_factory=RestConfig)
18 changes: 17 additions & 1 deletion src/blueapi/service/interface.py
Original file line number Diff line number Diff line change
@@ -3,10 +3,12 @@
from functools import cache
from typing import Any

from bluesky.callbacks.tiled_writer import TiledWriter
from bluesky_stomp.messaging import StompClient
from bluesky_stomp.models import Broker, DestinationBase, MessageTopic
from tiled.client import from_uri

from blueapi.config import ApplicationConfig, OIDCConfig, StompConfig
from blueapi.config import ApplicationConfig, OIDCConfig, StompConfig, TiledConfig
from blueapi.core.context import BlueskyContext
from blueapi.core.event import EventStream
from blueapi.service.model import DeviceModel, PlanModel, WorkerTask
@@ -48,6 +50,19 @@ def worker() -> TaskWorker:
return worker


@cache
def tiled_inserter():
tiled_config: TiledConfig | None = config().tiled
if tiled_config is not None:
client = from_uri(tiled_config.uri, api_key=tiled_config.api_key)

ctx = context()
ctx.run_engine.subscribe(TiledWriter(client))
return client
else:
return None


@cache
def stomp_client() -> StompClient | None:
stomp_config: StompConfig | None = config().stomp
@@ -86,6 +101,7 @@ def setup(config: ApplicationConfig) -> None:
logging.basicConfig(format="%(asctime)s - %(message)s", level=config.logging.level)
worker()
stomp_client()
tiled_inserter()


def teardown() -> None: