RkBlog

Hardware, programming and astronomy tutorials and reviews.

Sieciowy framework zadań Gearman w Pythonowych aplikacjach

Opis i wykorzystanie Gearmana - frameworka aplikacyjnego do zdalnego rozproszonego wykonywania zadań w różnych językach programistycznych

Gearman to framework aplikacyjny do zarządzania farmą zadań rozdzielanych na inne maszyny lub procesy lepiej przystosowane do wykonania określonej czynności. Np. aplikacja www może zlecić zadanie wygenerowania szeregu miniatur dla nadesłanych przez użytkownika grafik. Gearman umożliwia równoległe wykonywanie różnych zadań, rozkład wykonywanych zadań na różne serwery (load balancing), jak wywoływanie funkcji napisanych w różnych językach programistycznych.

Jak to działa?

Aplikacja oparta o Gearmana składa się z trzech części: klienta, pracownika i serwera prac. Klient odpowiedzialny jest za tworzenie prac do wykonania i za wysłanie ich na serwer. Serwer prac znajdzie odpowiedzialnego pracownika, który może wykonać daną pracę i zwrócić wynik do klienta poprzez serwer.

Instalacja Gearman

Przykładowy skrypt

Oto prosty kod pracownika:
from gearman import *

worker = GearmanWorker(["127.0.0.1"])
# rejestrujemy pracę "echo", do której przypisujemy określoną funkcję (lambda)
worker.register_function("echo", lambda job:job.arg)
worker.work()
A to kod klienta zlecającego wykonanie zadania/pracy:
from gearman import *

client = GearmanClient(["127.0.0.1"])
res = client.do_task(Task("echo", "foo"))
#assert res == "foo"
print res
RkBlog

10 October 2009;

Comment article