예제 #1
0
    def put_task(self, signature, routing_key=DEFAULT_CHANNEL):
        message = self.create_task_message(signature)
        remain_tasks_count = self.task_queues_manager.remain_tasks_count()
        self.enqueue_task(message)
        if remain_tasks_count == 0:  # call for help only if this is the first one.
            self.call_for_help(routing_key)

        async_result = None
        if message.get('need_result'):
            async_result = asynch_result.Asynch_result(
                message.get('task_id'),
                self.task_queues_manager._requests_need_result,
                self.receive_one_cycle)
        return async_result
예제 #2
0
 def request(self, message):
     time_stamp = str(self.now())
     message['message_id'] = time_stamp
     message['sender'] = self.name
     message['reply_to'] = self.name
     message['result'] = None
     message['correlation_id'] = time_stamp
     message = self.format_message(**message)
     self.append_request_message(message)
     async_result = None
     if message.get('need_result'):
         async_result = asynch_result.Asynch_result(
             message.get('correlation_id'), self._requests_need_result,
             self.receive_one_cycle)
     if self.status['Datatransceiver ready']: self.process_messages()
     return message, async_result