Source code for proxy.core.work.task.remote

# -*- coding: utf-8 -*-
"""
    proxy.py
    ~~~~~~~~
    ⚡⚡⚡ Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on
    Network monitoring, controls & Application development, testing, debugging.

    :copyright: (c) 2013-present by Abhinav Singh and contributors.
    :license: BSD, see LICENSE for more details.
"""
import time
import uuid
import multiprocessing
from typing import Any

from ..remote import BaseRemoteExecutor


[docs]class RemoteTaskExecutor(BaseRemoteExecutor):
[docs] def work(self, *args: Any) -> None: task_id = int(time.time()) uid = '%s-%s' % (self.iid, task_id) self.works[task_id] = self.create(uid, *args)
[docs]class SingleProcessTaskExecutor(multiprocessing.Process): def __init__(self, **kwargs: Any) -> None: super().__init__() self.daemon = True self.work_queue, remote = multiprocessing.Pipe() self.executor = RemoteTaskExecutor( iid=uuid.uuid4().hex, work_queue=remote, **kwargs, ) def __enter__(self) -> 'SingleProcessTaskExecutor': self.start() return self def __exit__(self, *args: Any) -> None: self.executor.running.set() self.join()
[docs] def run(self) -> None: self.executor.run()