def create_queue(self, queue_name, metadata=None, fail_on_exist=False, timeout=None):
_validate_not_none('<STR_LIT>', queue_name)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT>'<EOL>request.host = self._get_host()<EOL>request.path = _get_path(queue_name)<EOL>request.query = [('<STR_LIT>', _int_to_str(timeout))]<EOL>request.headers = [('<STR_LIT>', metadata)]<EOL>if not fail_on_exist:<EOL><INDENT>try:<EOL><INDENT>response = self._perform_request(request)<EOL>if response.status == _HTTP_RESPONSE_NO_CONTENT:<EOL><INDENT>return False<EOL><DEDENT>return True<EOL><DEDENT>except AzureHttpError as ex:<EOL><INDENT>_dont_fail_on_exist(ex)<EOL>return False<EOL><DEDENT><DEDENT>else:<EOL><INDENT>response = self._perform_request(request)<EOL>if response.status == _HTTP_RESPONSE_NO_CONTENT:<EOL><INDENT>raise AzureConflictHttpError(<EOL>_ERROR_CONFLICT.format(response.message), response.status)<EOL><DEDENT>return True<EOL><DEDENT>
Creates a queue under the given account.

:param str queue_name:
    The name of the queue to create. A queue name must be from 3 through 
    63 characters long and may only contain lowercase letters, numbers, 
    and the dash (-) character. The first and last letters in the queue 
    must be alphanumeric. The dash (-) character cannot be the first or 
    last character. Consecutive dash characters are not permitted in the 
    queue name.
:param metadata:
    A dict containing name-value pairs to associate with the queue as 
    metadata. Note that metadata names preserve the case with which they 
    were created, but are case-insensitive when set or read. 
:type metadata: a dict mapping str to str 
:param bool fail_on_exist:
    Specifies whether to throw an exception if the queue already exists.
:param int timeout:
    The server timeout, expressed in seconds.
:return:
    A boolean indicating whether the queue was created. If fail_on_exist 
    was set to True, this will throw instead of returning false.
:rtype: bool