Skip to content

Instantly share code, notes, and snippets.

@imankulov
Created November 26, 2013 10:08
Show Gist options
  • Save imankulov/bbb49b57fc15ad171fa9 to your computer and use it in GitHub Desktop.
Save imankulov/bbb49b57fc15ad171fa9 to your computer and use it in GitHub Desktop.
Собственный менеджер очередей. multiprocessing, queue и сорок строк кода
from multiprocessing.managers import BaseManager
from multiprocessing import Queue
ADDRESS = ('127.0.0.1', 5518)
AUTHKEY = 'foo'
def start_server():
class Manager(BaseManager):
pass
queue = Queue()
Manager.register('get_queue', lambda: queue)
manager = Manager(address=ADDRESS, authkey=AUTHKEY)
manager.get_server().serve_forever()
def start_worker():
queue = get_client_queue()
while True:
func, args, kwargs = queue.get()
print func(*args, **kwargs)
def enqueue(func, *args, **kwargs):
queue = get_client_queue()
queue.put((func, args, kwargs))
def get_client_queue():
class Manager(BaseManager):
pass
Manager.register('get_queue')
manager = Manager(address=ADDRESS, authkey=AUTHKEY)
manager.connect()
return manager.get_queue()
if __name__ == '__main__':
from IPython import embed
embed()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment