def METHOD_NAME(url, filename, data=None, timeout=300):
    """
    Retrieve a file from given url.
    :param url: source URL.
    :param filename: destination path.
    :param data: (optional) data to post.
    :param timeout: (optional) default timeout in seconds.
    :return: `None`.
    """
    process = Process(target=_url_download, args=(url, filename, data))
    log.info("Fetching %s -> %s", url, filename)
    process.start()
    process.join(timeout)
    if process.is_alive():
        process.terminate()
        process.join()
        raise OSError("Aborting downloading. Timeout was reached.")