Skip to content
Snippets Groups Projects
manager.py 829 B
Newer Older
Guilhem Saurel's avatar
Guilhem Saurel committed
#!/usr/bin/env python3

import multiprocessing
import os
from multiprocessing.managers import BaseManager

PORT = 7481
Guilhem Saurel's avatar
Guilhem Saurel committed
KEY = b"AiZa5Uavcoh3PiajvaeTee5z"  # keep it secret, keep it safe !
Guilhem Saurel's avatar
Guilhem Saurel committed


class QueueManager(BaseManager):
    """This Manager holds a Queue and waits for clients to use it."""
Guilhem Saurel's avatar
Guilhem Saurel committed

Guilhem Saurel's avatar
Guilhem Saurel committed
    pass


class QueueClient:
    """Base class for users of the Queue."""
Guilhem Saurel's avatar
Guilhem Saurel committed

Guilhem Saurel's avatar
Guilhem Saurel committed
    def __init__(self):
Guilhem Saurel's avatar
Guilhem Saurel committed
        QueueManager.register("get_queue")
        manager = QueueManager(
            address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
        )
Guilhem Saurel's avatar
Guilhem Saurel committed
        manager.connect()
        self.queue = manager.get_queue()


Guilhem Saurel's avatar
Guilhem Saurel committed
if __name__ == "__main__":
Guilhem Saurel's avatar
Guilhem Saurel committed
    queue = multiprocessing.Queue()
Guilhem Saurel's avatar
Guilhem Saurel committed
    QueueManager.register("get_queue", callable=lambda: queue)
    QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()