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())
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())
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)