def run(jobs): dispatcher = server.dispatcher_setup() [dispatcher.putWork((i,jobs[i])) for i in range(len(jobs))] while dispatcher.resultQueueSize() < len(jobs): time.sleep(1) results = [] [results.append(dispatcher.getResult()) for i in range(len(jobs))] #ensure results are returned in the same order they're put into the queue return [y[1] for y in sorted(results,key=lambda x: x[0])]
time.sleep(1) try: (id, job) = dispatcher.getWork() except Queue.Empty: dispatcher.add_log("%d-client has problem getting item from queue"%(client_id)) logging.info("%d-client has problem getting item from queue"%(client_id)) if job == "Poison": dispatcher.add_log("%d-client taking poison"%client_id) dispatcher.checkout() break #print "got job:", dispatcher.add_log("%d-client has job: %s"%(client_id,str(job))) #result = function(job) result = siesta.siesta_function("_".join([str(y) for y in job]),job) dispatcher.add_log("%d-client with job: %s has result: %s"%(client_id,str(job),str(result))) #print result try: dispatcher.putResult((id,result)) except Queue.Full: dispatcher.add_log("%d-client has problem adding items to the queue"%(client_id)) if __name__ == "__main__": dispatcher = server.dispatcher_setup() FORMAT="%(asctime)s %(message)s" logging.basicConfig(filename="clients.log",level=logging.DEBUG, format=FORMAT) logging.info("client check") client(dispatcher)
def poison(): dispatcher = server.dispatcher_setup() dispatcher.Poison()