コード例 #1
0
ファイル: message.py プロジェクト: ekowtaylor/ndkale
    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
コード例 #2
0
ファイル: message.py プロジェクト: iandees/ndkale
    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
コード例 #3
0
ファイル: message.py プロジェクト: kkaehler/ndkale
    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
コード例 #4
0
ファイル: message.py プロジェクト: ekowtaylor/ndkale
    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
コード例 #5
0
ファイル: test_crypt.py プロジェクト: teeparham/ndkale
 def test_decrypt(self):
     for msg in self.msgs:
         crypted_msg = crypt.encrypt(msg)
         self.assertEqual(msg, crypt.decrypt(crypted_msg))
コード例 #6
0
ファイル: test_crypt.py プロジェクト: teeparham/ndkale
 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))
コード例 #7
0
ファイル: test_crypt.py プロジェクト: kkaehler/ndkale
 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()]
コード例 #8
0
ファイル: test_crypt.py プロジェクト: Kaleva/ndkale
 def test_decrypt(self):
     for msg in self.TEST_MSGS:
         crypted_msg = crypt.encrypt(msg)
         self.assertEqual(msg, crypt.decrypt(crypted_msg))