'This operation is used to atomically retrieve and lock a message for
processing. The message is guaranteed not to be delivered to other
receivers during the lock duration period specified in buffer
description. Once the lock expires, the message will be available to
other receivers (on the same subscription only) during the lock
duration period specified in the topic description. Once the lock
expires, the message will be available to other receivers. In order to
complete processing of the message, the receiver should issue a delete
command with the lock ID received from this operation. To abandon
processing of the message and unlock it for other receivers, an Unlock
Message command should be issued, or the lock duration period can
expire.
topic_name:
Name of the topic.
subscription_name:
Name of the subscription.
timeout:
Optional. The timeout parameter is expressed in seconds.'

def peek_lock_subscription_message(self, topic_name, subscription_name, timeout='60'):

    _validate_not_none('topic_name', topic_name)
    _validate_not_none('subscription_name', subscription_name)
    request = HTTPRequest()
    request.method = 'POST'
    request.host = self._get_host()
    request.path = (((('/' + _str(topic_name)) + '/subscriptions/') + _str(subscription_name)) + '/messages/head')
    request.query = [('timeout', _int_or_none(timeout))]
    (request.path, request.query) = self._httpclient._update_request_uri_query(request)
    request.headers = self._update_service_bus_header(request)
    response = self._perform_request(request)
    return _create_message(response, self)
