terminate worker on finalize

This commit is contained in:
Mikhail Epifanov
2024-02-06 00:17:23 +01:00
parent 2bfc8b0717
commit 65a7c82af9

View File

@@ -2,6 +2,7 @@ import asyncio
import logging import logging
import multiprocessing import multiprocessing
import queue import queue
import weakref
from asyncio import Task from asyncio import Task
from dataclasses import dataclass from dataclasses import dataclass
from enum import Enum from enum import Enum
@@ -49,6 +50,7 @@ class ConnectorManager:
self._queue = multiprocessing.JoinableQueue(maxsize=settings.EXTERNAL_CONNECTORS_QUEUE_SIZE) self._queue = multiprocessing.JoinableQueue(maxsize=settings.EXTERNAL_CONNECTORS_QUEUE_SIZE)
self._worker = multiprocessing.Process(target=self.worker, args=(0, self._queue,), daemon=True) self._worker = multiprocessing.Process(target=self.worker, args=(0, self._queue,), daemon=True)
self._worker.start() self._worker.start()
weakref.finalize(self, self._worker.terminate)
# Called by post save & post delete signals # Called by post save & post delete signals
def __call__(self, instance: Any, **kwargs) -> None: def __call__(self, instance: Any, **kwargs) -> None: