New stream per file.
authorBenjamin Braatz <bb@bbraatz.eu>
Thu, 29 Jul 2021 14:18:45 +0000 (16:18 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Thu, 29 Jul 2021 14:18:45 +0000 (16:18 +0200)
controlpi_plugins/camera.py

index 0e2790cecec5bb1db5e2a02e8e04311c4b885dad..98fc6088ca62b299334476a540f44abb99c4e728 100644 (file)
@@ -57,7 +57,6 @@ class Camera(BasePlugin):
     async def run(self) -> None:
         """Run camera."""
         camera = picamera.PiCamera()
-        stream = io.BytesIO()
         camera.resolution = self._resolution
         camera.iso = self._iso
         try:
@@ -79,12 +78,14 @@ class Camera(BasePlugin):
                             filepath = os.path.join(self.conf['path'],
                                                     filename)
                             await aiofiles.os.remove(filepath)
+                        stream = io.BytesIO()
                         camera.capture(stream, 'jpeg', resize=self._resize)
                         filename = (datetime.datetime.utcnow()
                                     .strftime('%Y%m%d%H%M%S%f') + '.jpg')
                         filepath = os.path.join(self.conf['path'], filename)
                         async with aiofiles.open(filepath, 'wb') as f:
                             await f.write(stream.getvalue())
+                        stream.close()
                         self._images.append(filename)
                         await self.bus.send(Message(self.name,
                                                     {'event': 'new image',