server: aggressively kill python plugin processes and forks

This commit is contained in:
Koushik Dutta
2023-04-02 09:33:48 -07:00
parent 0a0a31574f
commit 6afd4b4579
2 changed files with 6 additions and 5 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/server",
"version": "0.7.41",
"version": "0.7.42",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/server",
"version": "0.7.41",
"version": "0.7.42",
"license": "ISC",
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.10",

View File

@@ -651,9 +651,7 @@ async def plugin_async_main(loop: AbstractEventLoop, rpcTransport: rpc_reader.Rp
try:
await readLoop()
finally:
if type(rpcTransport) == rpc_reader.RpcConnectionTransport:
r: rpc_reader.RpcConnectionTransport = rpcTransport
r.executor.shutdown()
os._exit(0)
def main(rpcTransport: rpc_reader.RpcTransport):
loop = asyncio.new_event_loop()
@@ -675,6 +673,9 @@ def plugin_main(rpcTransport: rpc_reader.RpcTransport):
from gi.repository import GLib, Gst
Gst.init(None)
# can't remember why starting the glib main loop is necessary.
# maybe gstreamer on linux and other things needed it?
# seems optional on other platforms.
loop = GLib.MainLoop()
worker = threading.Thread(target=main, args=(rpcTransport,), name="asyncio-main")