コード例 #1
0
def test_publish_lambda(mock_publish_over_sns, mock_convert_to_json, message,
                        settings):
    settings.IS_LAMBDA_APP = True

    sns_id = str(uuid.uuid4())
    message.priority = Priority.high
    mock_publish_over_sns.return_value = {'MessageId': sns_id}

    publish(message)

    topic = _get_sns_topic(message.priority)
    mock_publish_over_sns.assert_called_once_with(
        topic, mock_convert_to_json.return_value, message.headers)
    mock_convert_to_json.assert_called_once_with(message.as_dict())
コード例 #2
0
def test_publish_non_lambda(mock_publish_over_sqs, mock_convert_to_json,
                            mock_get_queue, mock_get_queue_name, message):
    assert settings.TASKHAWK_QUEUE
    sqs_id = str(uuid.uuid4())
    message.priority = Priority.high
    mock_publish_over_sqs.return_value = {'MessageId': sqs_id}

    publish(message)

    mock_get_queue_name.assert_called_once_with(message.priority)
    mock_get_queue.assert_called_once_with(mock_get_queue_name.return_value)
    mock_publish_over_sqs.assert_called_once_with(
        mock_get_queue.return_value, mock_convert_to_json.return_value,
        message.headers)
    mock_convert_to_json.assert_called_once_with(message.as_dict())
コード例 #3
0
 def dispatch(self, *args, **kwargs) -> None:
     """
     Dispatch task for async execution
     :param args: arguments to pass to the task
     :param kwargs: keyword args to pass to the task
     """
     message = Message.new(
         self._task.name,
         copy.deepcopy(args),
         copy.deepcopy(kwargs),
         headers={**settings.TASKHAWK_DEFAULT_HEADERS(), **self._headers},
     )
     message.priority = self._priority or self._task.priority
     if settings.TASKHAWK_SYNC:
         message.validate()
         message.call_task(None)
     else:
         publish(message)