Sometimes it’s easier to just learn by looking at some sample code, so here is a simple server that demonstrates most of how to use gmtasks.
from multiprocessing import freeze_support
from gmtasks.jsonclass import GearmanWorker
from gmtasks import GearmanTaskServer, Task
# Jobs
def job1(worker, job):
return job.data['string1']
def job2(worker, job):
return job.data['string2']
def job3(worker, job):
return job.data['string3']
# Main loop
if __name__ == '__main__':
# Need this to run in Windows
freeze_support()
# Import all of the jobs we handle
tasks = [
# You can use a Task()
Task('job1', job1),
# Or a dict
{'task': 'job2', 'callback': job2},
# Or a list/tuple
['job3', job3],
]
# Initialize the server
server = GearmanTaskServer(
host_list = ['localhost:4730'],
tasks = tasks,
max_workers = None, # Defaults to multiprocessing.cpu_count()
id_prefix = 'myworker.',
worker_class = GearmanWorker,
use_sighandler = True, # SIGINT and SIGTERM send KeyboardInterrupt
verbose = True, # log.info() and log.error() messages
)
# Run the loop
server.serve_forever()