From 37778f94f8664c56c5a08a86deb40590387a0ec7 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 9 Jan 2025 16:29:03 +0000 Subject: [PATCH 1/6] Use PikaTransport object directly to load RabbitMQ credentials --- src/murfey/server/__init__.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index c5a2825b8..dc9ae70d4 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -17,7 +17,6 @@ import mrcfile import numpy as np import uvicorn -import workflows from backports.entry_points_selectable import entry_points from fastapi import Request from fastapi.templating import Jinja2Templates @@ -42,6 +41,7 @@ from sqlalchemy.orm.exc import ObjectDeletedError from sqlmodel import Session, create_engine, select from werkzeug.utils import secure_filename +from workflows.transport.pika_transport import PikaTransport import murfey import murfey.server.ispyb @@ -273,6 +273,7 @@ def run(): help="Increase logging output verbosity", default=0, ) + args = parser.parse_args() security_config = get_security_config() # setup logging @@ -286,15 +287,14 @@ def run(): # Install a log filter to all existing handlers. LogFilter.install() - workflows.transport.load_configuration_file(security_config.rabbitmq_credentials) - - args = parser.parse_args() + # Load RabbitMQ configuration + PikaTransport().load_configuration_file(security_config.rabbitmq_credentials) # Set up Zocalo connection if args.demo: os.environ["MURFEY_DEMO"] = "1" else: - _set_up_transport(args.transport) + _set_up_transport("pika") # Set up logging now that the desired verbosity is known _set_up_logging(quiet=args.quiet, verbosity=args.verbose) From c68f0c4f4c8f6187ac9394101d0013fe9792824d Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 9 Jan 2025 16:32:45 +0000 Subject: [PATCH 2/6] Corrected comments describing _set_up_transport --- src/murfey/server/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index dc9ae70d4..524e3ae2c 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -290,7 +290,7 @@ def run(): # Load RabbitMQ configuration PikaTransport().load_configuration_file(security_config.rabbitmq_credentials) - # Set up Zocalo connection + # Set up RabbitMQ connection if args.demo: os.environ["MURFEY_DEMO"] = "1" else: From 2fb92de4e659bfb3e6f9bb7ea0d13ef10e57a424 Mon Sep 17 00:00:00 2001 From: Dan Hatton Date: Thu, 9 Jan 2025 16:34:33 +0000 Subject: [PATCH 3/6] Ignore unknown arguments --- src/murfey/server/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index 524e3ae2c..736e5f7a1 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -273,7 +273,7 @@ def run(): help="Increase logging output verbosity", default=0, ) - args = parser.parse_args() + args, unknown = parser.parse_known_args() security_config = get_security_config() # setup logging From 6d112ec60e1710f9cc3c9a62d71cf91be9624739 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 9 Jan 2025 16:38:11 +0000 Subject: [PATCH 4/6] Load RabbitMQ credentials only when not in demo mode --- src/murfey/server/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index 736e5f7a1..a7e217be4 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -287,13 +287,12 @@ def run(): # Install a log filter to all existing handlers. LogFilter.install() - # Load RabbitMQ configuration - PikaTransport().load_configuration_file(security_config.rabbitmq_credentials) - - # Set up RabbitMQ connection if args.demo: + # Run in demo mode with no connections set up os.environ["MURFEY_DEMO"] = "1" else: + # Load RabbitMQ configuration and set up the connection + PikaTransport().load_configuration_file(security_config.rabbitmq_credentials) _set_up_transport("pika") # Set up logging now that the desired verbosity is known From 1565e5b790d116be9060ec7e2bb0cb57a86dffd7 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Thu, 9 Jan 2025 17:07:08 +0000 Subject: [PATCH 5/6] Updated comments documenting code function --- src/murfey/server/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index a7e217be4..325d386eb 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -225,6 +225,7 @@ def respond_with_template( def run(): + # Set up argument parser parser = argparse.ArgumentParser(description="Start the Murfey server") parser.add_argument( "--host", @@ -273,17 +274,19 @@ def run(): help="Increase logging output verbosity", default=0, ) + # Parse and separate known and unknown args args, unknown = parser.parse_known_args() + # Load the security configuration security_config = get_security_config() - # setup logging + + # Set up GrayLog handler if provided in the configuration if security_config.graylog_host: handler = graypy.GELFUDPHandler( security_config.graylog_host, security_config.graylog_port, level_names=True ) root_logger = logging.getLogger() root_logger.addHandler(handler) - # Install a log filter to all existing handlers. LogFilter.install() From 1ffb365a649fb7cb3fe6079687dc61ed638a3252 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Fri, 10 Jan 2025 09:58:15 +0000 Subject: [PATCH 6/6] Transport type should be 'PikaTransport', not 'pika'; added type hints to indicate this --- src/murfey/server/__init__.py | 6 +++--- src/murfey/server/ispyb.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/murfey/server/__init__.py b/src/murfey/server/__init__.py index 325d386eb..fb8e1a1c9 100644 --- a/src/murfey/server/__init__.py +++ b/src/murfey/server/__init__.py @@ -11,7 +11,7 @@ from importlib.resources import files from pathlib import Path from threading import Thread -from typing import Any, Dict, List, NamedTuple, Tuple +from typing import Any, Dict, List, Literal, NamedTuple, Tuple import graypy import mrcfile @@ -296,7 +296,7 @@ def run(): else: # Load RabbitMQ configuration and set up the connection PikaTransport().load_configuration_file(security_config.rabbitmq_credentials) - _set_up_transport("pika") + _set_up_transport("PikaTransport") # Set up logging now that the desired verbosity is known _set_up_logging(quiet=args.quiet, verbosity=args.verbose) @@ -395,7 +395,7 @@ def _set_up_logging(quiet: bool, verbosity: int): logging.getLogger(logger_name).setLevel(log_level) -def _set_up_transport(transport_type): +def _set_up_transport(transport_type: Literal["PikaTransport"]): global _transport_object _transport_object = TransportManager(transport_type) diff --git a/src/murfey/server/ispyb.py b/src/murfey/server/ispyb.py index ce01b2cdc..119cbb7ea 100644 --- a/src/murfey/server/ispyb.py +++ b/src/murfey/server/ispyb.py @@ -3,7 +3,7 @@ import datetime import logging import os -from typing import Callable, List, Optional +from typing import Callable, List, Literal, Optional import ispyb @@ -55,7 +55,7 @@ def _send_using_new_connection(transport_type: str, queue: str, message: dict) - class TransportManager: - def __init__(self, transport_type): + def __init__(self, transport_type: Literal["PikaTransport"]): self._transport_type = transport_type self.transport = workflows.transport.lookup(transport_type)() self.transport.connect()