From dee05de8b8d08aa3f75d798511605e2c385232ae Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Tue, 27 Oct 2020 10:18:44 +0100 Subject: [PATCH] Transition to with statement for writer In case of exception while writing the file it would not get closed properly previously - file.close() would never have been called. --- sf_daq_broker/writer/bsread_writer.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sf_daq_broker/writer/bsread_writer.py b/sf_daq_broker/writer/bsread_writer.py index c2ef7c6..6c4b291 100644 --- a/sf_daq_broker/writer/bsread_writer.py +++ b/sf_daq_broker/writer/bsread_writer.py @@ -46,9 +46,8 @@ def write_from_databuffer(data_api_request, output_file, metadata): start_time = time() - writer = BsreadH5Writer(output_file, metadata) - writer.write_data(data) - writer.close() + with BsreadH5Writer(output_file, metadata) as writer: + writer.write_data(data) _logger.info("Data writing took %s seconds." % (time() - start_time)) @@ -106,6 +105,12 @@ class BsreadH5Writer(object): self._create_metadata_datasets(metadata) + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + def _create_metadata_datasets(self, metadata): _logger.debug("Initializing metadata datasets.")