Update export statistics

This commit is contained in:
bot 2026-06-14 15:24:16 +00:00
parent 863d629aa8
commit fecefb49a1
5 changed files with 26 additions and 20 deletions

BIN
dist/zhurnal-0.2.0-py3-none-any.whl vendored Normal file

Binary file not shown.

BIN
dist/zhurnal-0.2.0.tar.gz vendored Normal file

Binary file not shown.

View File

@ -1,6 +1,6 @@
Metadata-Version: 2.4 Metadata-Version: 2.4
Name: zhurnal Name: zhurnal
Version: 0.1.0 Version: 0.2.0
Summary: Process monitoring and management web application Summary: Process monitoring and management web application
Author: retoor Author: retoor
Author-email: retoor@molodetz.nl Author-email: retoor@molodetz.nl
@ -8,7 +8,7 @@ Requires-Python: >=3.8
Description-Content-Type: text/markdown Description-Content-Type: text/markdown
Requires-Dist: aiohttp Requires-Dist: aiohttp
Requires-Dist: setuptools Requires-Dist: setuptools
Requires-Dist: app@ git+https://retoor.molodetz.nl/retoor/app.git Requires-Dist: app @ git+https://retoor.molodetz.nl/retoor/app.git
# Zhurnal: Real-Time Process Monitoring Web Interface 🚀 # Zhurnal: Real-Time Process Monitoring Web Interface 🚀

View File

@ -1,3 +1,3 @@
aiohttp aiohttp
setuptools setuptools
app@ git+https://retoor.molodetz.nl/retoor/app.git app @ git+https://retoor.molodetz.nl/retoor/app.git

View File

@ -236,7 +236,7 @@ class Zhurnal(BaseApplication):
for command, process_info in list(self.processes.items()): for command, process_info in list(self.processes.items()):
try: try:
# Get the subprocess # Get the subprocess
process = process_info.get('process') process = process_info.get("process")
if process and process.returncode is None: if process and process.returncode is None:
log.info(f"Terminating process: {command}") log.info(f"Terminating process: {command}")
try: try:
@ -299,10 +299,7 @@ class Zhurnal(BaseApplication):
) )
# Store process information # Store process information
self.processes[command] = { self.processes[command] = {"process": process, "name": process_name}
'process': process,
'name': process_name
}
log.info(f"Running process {process_name}: {command}") log.info(f"Running process {process_name}: {command}")
@ -320,7 +317,9 @@ class Zhurnal(BaseApplication):
) )
decoded_line = line.decode("utf-8", "ignore").strip() decoded_line = line.decode("utf-8", "ignore").strip()
print(decoded_line) print(decoded_line)
decoded_line = "".join(c for c in decoded_line if c.isprintable()) decoded_line = "".join(
c for c in decoded_line if c.isprintable()
)
# Broadcast to all WebSocket clients # Broadcast to all WebSocket clients
for client in app.clients: for client in app.clients:
@ -346,7 +345,13 @@ class Zhurnal(BaseApplication):
# Read stdout and stderr concurrently # Read stdout and stderr concurrently
await asyncio.gather( await asyncio.gather(
read_output(self, f"{process_name}:stdout", process, process.stdout), read_output(self, f"{process_name}:stdout", process, process.stdout),
read_output(self, f"{process_name}:stderr", process, process.stderr, is_stderr=True) read_output(
self,
f"{process_name}:stderr",
process,
process.stderr,
is_stderr=True,
),
) )
# Wait for process to complete # Wait for process to complete
@ -422,5 +427,6 @@ def cli():
app.run(host=args.host, port=args.port) app.run(host=args.host, port=args.port)
if __name__ == "__main__": if __name__ == "__main__":
cli() cli()