Skip to content

Commit

Permalink
Fix pickling issue under MacOS and Windows.
Browse files Browse the repository at this point in the history
  • Loading branch information
funilrys committed Jan 3, 2021
1 parent 81bb2f4 commit 652fdf2
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 17 deletions.
10 changes: 8 additions & 2 deletions PyFunceble/cli/processes/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,24 @@ def __init__(
input_queue: Optional[queue.Queue] = None,
output_queue: Optional[queue.Queue] = None,
daemon: bool = False,
generate_input_queue: bool = True,
generate_output_queue: bool = True,
) -> None:
self.manager = manager

if input_queue is None:
self.input_queue = self.manager.Queue()
else:
elif generate_input_queue:
self.input_queue = input_queue
else:
self.input_queue = None

if output_queue is None:
self.output_queue = self.manager.Queue()
else:
elif generate_output_queue:
self.output_queue = output_queue
else:
self.output_queue = None

if max_worker is not None:
self.max_worker = max_worker
Expand Down
7 changes: 5 additions & 2 deletions PyFunceble/cli/processes/migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,12 @@ def create(self) -> "ProcessesManagerBase":
continue

worker = MigratorWorker(
self.manager, name=f"pyfunceble_{method}", daemon=True
None,
name=f"pyfunceble_{method}",
daemon=True,
continuous_integration=self.continuous_integration,
)
worker.target_args = (self.continuous_integration,)

worker.target = getattr(self, method)

self._created_workers.append(worker)
Expand Down
18 changes: 9 additions & 9 deletions PyFunceble/cli/processes/workers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,20 +88,20 @@ class WorkerBase(multiprocessing.Process):
send_feeding_message: Optional[bool] = None
accept_waiting_delay: Optional[bool] = None

__parent_connection: Optional[multiprocessing.connection.Connection] = None
_parent_connection: Optional[multiprocessing.connection.Connection] = None
_child_connection: Optional[multiprocessing.connection.Connection] = None
__exception: Optional[multiprocessing.Pipe] = None
_exception: Optional[multiprocessing.Pipe] = None

def __init__(
self,
input_queue: queue.Queue,
input_queue: Optional[queue.Queue],
output_queue: Optional[queue.Queue] = None,
global_exit_event: Optional[multiprocessing.Event] = None,
*,
name: Optional[str] = None,
daemon: Optional[bool] = None,
continuous_integration: Optional[ContinuousIntegrationBase] = None,
configuration: Optional[dict] = None
configuration: Optional[dict] = None,
) -> None:
self.configuration = configuration
self.input_queue = input_queue
Expand All @@ -112,8 +112,8 @@ def __init__(
self.global_exit_event = global_exit_event
self.exit_it = multiprocessing.Event()

self.__parent_connection, self._child_connection = multiprocessing.Pipe()
self.__exception = None
self._parent_connection, self._child_connection = multiprocessing.Pipe()
self._exception = None

self.send_feeding_message = True
self.accept_waiting_delay = True
Expand All @@ -133,10 +133,10 @@ def exception(self):
Provides the exception of the current worker.
"""

if self.__parent_connection.poll():
self.__exception = self.__parent_connection.recv()
if self._parent_connection.poll():
self._exception = self._parent_connection.recv()

return self.__exception
return self._exception

def add_to_input_queue(
self, data: Any, *, worker_name: Optional[str] = None
Expand Down
6 changes: 2 additions & 4 deletions PyFunceble/cli/processes/workers/migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
"""

import traceback
from typing import Optional

import PyFunceble.facility
import PyFunceble.factory
Expand All @@ -68,11 +67,10 @@ class MigratorWorker(WorkerBase):

STD_NAME: str = "pyfunceble_migrator_worker"

target_args: Optional[list] = list()

def run(self) -> None:
try:
self.target(*self.target_args)

self.target(self.continuous_integration)
self._child_connection.send(None)
except Exception as exception: # pylint: disable=broad-except
PyFunceble.facility.Logger.critical(
Expand Down
2 changes: 2 additions & 0 deletions PyFunceble/cli/system/launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,8 @@ def __init__(self, args: Optional[argparse.Namespace] = None) -> None:
self.manager,
continuous_integration=self.continuous_integration,
daemon=True,
generate_input_queue=False,
generate_output_queue=False,
)

if PyFunceble.storage.CONFIGURATION.cli_testing.mining:
Expand Down

0 comments on commit 652fdf2

Please sign in to comment.