From adcd11d7851e3bf31f2f37cce3df717cb28c5566 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Mon, 14 Feb 2022 12:34:43 -0800 Subject: [PATCH] server: add python process stats --- server/python/plugin-remote.py | 18 ++++++++++++++++++ server/python/rpc.py | 6 ++++++ server/src/plugin/plugin-remote.ts | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/server/python/plugin-remote.py b/server/python/plugin-remote.py index 29f51e58f..62856cef3 100644 --- a/server/python/plugin-remote.py +++ b/server/python/plugin-remote.py @@ -25,6 +25,7 @@ import shutil import gc import threading import gi +import resource gi.require_version('Gst', '1.0') from gi.repository import Gst, GLib @@ -316,6 +317,23 @@ async def async_main(loop: AbstractEventLoop): peer.params['getRemote'] = lambda api, pluginId: PluginRemote( api, pluginId, loop) + def oob_runner(): + ptime = round(time.process_time() * 1000000) + heapTotal = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss + oob = { + 'type': 'stats', + 'cpuUsage': { + 'user': ptime, + 'system': 0, + }, + 'memoryUsage': { + 'heapTotal': heapTotal, + }, + } + peer.sendOob(oob) + loop.call_later(10, oob_runner) + oob_runner() + await readLoop(loop, peer, reader) diff --git a/server/python/rpc.py b/server/python/rpc.py index 1c0183add..44c9c3590 100644 --- a/server/python/rpc.py +++ b/server/python/rpc.py @@ -370,3 +370,9 @@ class RpcPeer: } self.send(paramMessage, reject) return await self.createPendingResult(send) + + def sendOob(self, oob: Any): + self.send({ + 'type': 'oob', + 'oob': oob, + }) diff --git a/server/src/plugin/plugin-remote.ts b/server/src/plugin/plugin-remote.ts index 6c2b977d5..63e9c49c4 100644 --- a/server/src/plugin/plugin-remote.ts +++ b/server/src/plugin/plugin-remote.ts @@ -88,7 +88,7 @@ class EndpointManagerImpl implements EndpointManager { } async getPublicCloudEndpoint(nativeId?: ScryptedNativeId): Promise { const local = await this.getPublicLocalEndpoint(nativeId); - const mo = this.mediaManager.createMediaObject(local, ScryptedMimeTypes.LocalUrl); + const mo = this.mediaManager.createMediaObject(Buffer.from(local), ScryptedMimeTypes.LocalUrl); return this.mediaManager.convertMediaObjectToUrl(mo, ScryptedMimeTypes.LocalUrl); } async getPublicLocalEndpoint(nativeId?: ScryptedNativeId): Promise {