self._temp_file = None
+printer_lock = asyncio.Lock()
+
+
async def print_queue_item(queue_item: QueueBase) -> QueueBase:
"""Print a queue item, capturing the results of the call.
job printed
"""
for i in range(0, queue_item.copies):
- stdout = io.StringIO
- proc = await asyncio.create_subprocess_exec(
- "ptouch-print",
- *queue_item.ptouch_arguments(),
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- )
- (stdout, stderr) = await proc.communicate()
- queue_item.cleanup()
- queue_item.printed_at = datetime.now()
- if proc.returncode != 0:
- queue_item.failed = True
- break
- queue_item.job_result += stdout.decode()
+ async with printer_lock:
+ stdout = io.StringIO
+ proc = await asyncio.create_subprocess_exec(
+ "ptouch-print",
+ *queue_item.ptouch_arguments(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ )
+ (stdout, stderr) = await proc.communicate()
+ queue_item.cleanup()
+ queue_item.printed_at = datetime.now()
+ if proc.returncode != 0:
+ queue_item.failed = True
+ break
+ queue_item.job_result += stdout.decode()
return queue_item