def enqueue_job(iszmq, jobpath, destip, destport): # Bind to some other port. Not to the main 33310. if iszmq: messenger_type = messenger.ZMQMessenger.TYPE_CLIENT m = messenger.ZMQMessenger(port=0, type=messenger_type) else: m = messenger.UDPMessenger(port=0) m.start() my_hostname = socket.gethostname() m.register_destination(my_hostname, (destip, destport)) # This file contains at most 3 methods: split, combine, processor and # at most 1 variables: input_data jobdir, jobfile = os.path.split(jobpath) job_module_name = jobfile[:-3] pkg = __import__(jobdir, globals(), locals(), [job_module_name], 0) jobcode = getattr(pkg, job_module_name) try: combiner = Combiner() combiner.set_combine_method(jobcode.combine) except: combiner = None try: splitter = Splitter() splitter.set_split_method(jobcode.split) except: splitter = None job = Job(processor=jobcode.processor, input_data=jobcode.input_data, splitter=splitter, combiner=combiner) try: job.input_data = jobcode.input_data except: pass if iszmq: m.connect((destip, destport)) m.send_job(job, (destip, destport)) else: tracker = m.send_job(job, (destip, dest_port), track=True) while tracker.state != message.MessageTracker.MSG_ACKED: time.sleep(2.0) return