Properly clean up temporary capture files at API exit
This commit is contained in:
parent
dce59f3b88
commit
d3226731d6
3 changed files with 21 additions and 6 deletions
|
|
@ -25,6 +25,7 @@ from openflexure_microscope import Microscope
|
||||||
from openflexure_microscope.camera.pi import StreamingCamera
|
from openflexure_microscope.camera.pi import StreamingCamera
|
||||||
from openflexure_stage import OpenFlexureStage
|
from openflexure_stage import OpenFlexureStage
|
||||||
|
|
||||||
|
import atexit
|
||||||
import logging, sys
|
import logging, sys
|
||||||
|
|
||||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
||||||
|
|
@ -350,6 +351,7 @@ class CaptureListAPI(MicroscopeView):
|
||||||
:status 200: capture created
|
:status 200: capture created
|
||||||
"""
|
"""
|
||||||
state = parse_payload(request)
|
state = parse_payload(request)
|
||||||
|
logging.info(state)
|
||||||
|
|
||||||
# TODO: Roll all of these ugly if statements into a method for getting payload elements
|
# TODO: Roll all of these ugly if statements into a method for getting payload elements
|
||||||
if 'filename' in state:
|
if 'filename' in state:
|
||||||
|
|
@ -569,6 +571,12 @@ app.add_url_rule(
|
||||||
uri('/capture/<capture_id>/download/<filename>'),
|
uri('/capture/<capture_id>/download/<filename>'),
|
||||||
view_func=CaptureDownloadAPI.as_view('capture_download', microscope=api_microscope))
|
view_func=CaptureDownloadAPI.as_view('capture_download', microscope=api_microscope))
|
||||||
|
|
||||||
|
# Automatically clean up microscope at exit
|
||||||
|
def cleanup():
|
||||||
|
global api_microscope
|
||||||
|
api_microscope.close()
|
||||||
|
|
||||||
|
atexit.register(cleanup)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.run(host='0.0.0.0', port="5000", threaded=True, debug=True, use_reloader=False)
|
app.run(host='0.0.0.0', port="5000", threaded=True, debug=True, use_reloader=False)
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ class StreamObject(object):
|
||||||
"""Create a new StreamObject, to manage capture data."""
|
"""Create a new StreamObject, to manage capture data."""
|
||||||
# Store a nice ID
|
# Store a nice ID
|
||||||
self.id = uuid.uuid4().hex
|
self.id = uuid.uuid4().hex
|
||||||
logging.info("Created StreamObject {}".format(self.id))
|
logging.info("Created StreamObject {}. keep_on_disk: {}, write_to_file: {}".format(self.id, keep_on_disk, write_to_file))
|
||||||
|
|
||||||
# Store file format
|
# Store file format
|
||||||
self.format = fmt
|
self.format = fmt
|
||||||
|
|
@ -81,11 +81,9 @@ class StreamObject(object):
|
||||||
|
|
||||||
Defaults to datestamp.
|
Defaults to datestamp.
|
||||||
"""
|
"""
|
||||||
appendix = ""
|
|
||||||
if not self.keep_on_disk:
|
|
||||||
appendix += ".tmp"
|
|
||||||
|
|
||||||
file_name = "{}.{}".format(filename, fmt)
|
base_name = filename
|
||||||
|
file_name = "{}.{}".format(base_name, fmt)
|
||||||
|
|
||||||
# Create folder and file
|
# Create folder and file
|
||||||
if folder:
|
if folder:
|
||||||
|
|
@ -96,9 +94,17 @@ class StreamObject(object):
|
||||||
else:
|
else:
|
||||||
file_path = file_name
|
file_path = file_name
|
||||||
|
|
||||||
self.basename = filename
|
# Handle path appendix
|
||||||
|
appendix = ""
|
||||||
|
if not self.keep_on_disk:
|
||||||
|
appendix += ".tmp"
|
||||||
|
|
||||||
|
file_path = file_path + appendix
|
||||||
|
|
||||||
|
#self.basename = filename
|
||||||
self.file = file_path
|
self.file = file_path
|
||||||
self.filename = file_name
|
self.filename = file_name
|
||||||
|
self.basename = base_name
|
||||||
|
|
||||||
def lock(self):
|
def lock(self):
|
||||||
"""Set locked flag to True."""
|
"""Set locked flag to True."""
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,7 @@ class StreamingCamera(BaseCamera):
|
||||||
fmt (str): Format of the capture.
|
fmt (str): Format of the capture.
|
||||||
resize ((int, int)): Resize the captured image.
|
resize ((int, int)): Resize the captured image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# If no filename is specified, build a non-clashing one
|
# If no filename is specified, build a non-clashing one
|
||||||
if not filename:
|
if not filename:
|
||||||
filename = self.generate_basename(self.images)
|
filename = self.generate_basename(self.images)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue