def decode_sqs(cls, sqs_message): """Custom decoding for Kale tasks from sqs messages :param boto3.resources.factory.sqs.Message sqs_message: message to decode. :return: a kale message :rtype: KaleMessage """ message_body = crypt.decrypt(sqs_message.body) message_body = pickle.loads(_decompressor(message_body)) # queue_url format is https://queue.amazonaws.com/<account id>/<queue name> sqs_queue_name = sqs_message.queue_url.rsplit('/', 1)[1] msg = cls( sqs_queue_name=sqs_queue_name, sqs_message_id=sqs_message.message_id, sqs_receipt_handle=sqs_message.receipt_handle, task_id=message_body.get('id'), task_name=message_body.get('task'), payload=message_body.get('payload'), enqueued_time=message_body.get('_enqueued_time'), publisher_data=message_body.get('_publisher'), current_retry_num=message_body.get('retry_num'), instantiate_task=True, delete_func=sqs_message.delete ) return msg
def decode(self, msg): """Custom decoding for Kale tasks. :param str msg: message to decode. :return: dictionary for decoded message. :rtype: dict """ message_body = crypt.decrypt(msg) message_body = pickle.loads(_decompressor(message_body)) self.task_name = message_body['task'] self.task_id = message_body['id'] self.task_args = message_body['payload']['args'] self.task_kwargs = message_body['payload']['kwargs'] self.task_retry_num = message_body['retry_num'] # This will instantiate the task. self.task_inst = self._class_from_path(self.task_name)(message_body) return message_body
def decode(self, msg): """Custom decoding for Kale tasks. :param str msg: message to decode. :return: dictionary for decoded message. :rtype: dict """ message_body = crypt.decrypt(msg) message_body = pickle.loads(_decompressor(message_body)) self.task_name = message_body['task'] self.task_id = message_body['id'] self.task_args = message_body['payload']['args'] self.task_kwargs = message_body['payload']['kwargs'] self.task_retry_num = message_body['retry_num'] self.task_app_data = message_body['payload'].get('app_data') # This will instantiate the task. self.task_inst = self._class_from_path(self.task_name)(message_body) return message_body
def decode_str(cls, message_str): """Custom decoding for Kale tasks from strings :param str message_str: message to decode. :return: a kale message :rtype: KaleMessage """ message_body = crypt.decrypt(message_str) message_body = pickle.loads(_decompressor(message_body)) msg = cls( task_id=message_body.get('id'), task_name=message_body.get('task'), payload=message_body.get('payload'), enqueued_time=message_body.get('_enqueued_time'), publisher_data=message_body.get('_publisher'), current_retry_num=message_body.get('retry_num') ) return msg
def test_decrypt(self): for msg in self.msgs: crypted_msg = crypt.encrypt(msg) self.assertEqual(msg, crypt.decrypt(crypted_msg))
def test_backwards_compatible(self): """Test that we still decrypt any existing messages correctly.""" for msg, encrypted in self.msgs_encrypt: self.assertEqual(msg, crypt.decrypt(encrypted))
def test_decrypt(self): crypted_msgs = {msg: crypt.encrypt(msg) for msg in self.TEST_MSGS} [self.assertEqual(msg, crypt.decrypt(crypted_msg)) for msg, crypted_msg in crypted_msgs.iteritems()]
def test_decrypt(self): for msg in self.TEST_MSGS: crypted_msg = crypt.encrypt(msg) self.assertEqual(msg, crypt.decrypt(crypted_msg))