def METHOD_NAME(download_url: str, file_path: str, job: DownloaderJob) -> DownloaderJob:
    """Download the file via FTP.
    I spoke to Erin from Ensembl about ways to improve this. They're looking into it,
    but have decided against adding an Aspera endpoint.
    She suggested using `rsync`, we could try shelling out to that.
    """
    try:
        logger.debug(
            "Downloading file from %s to %s.", download_url, file_path, downloader_job=job.id
        )
        urllib.request.urlcleanup()
        target_file = open(file_path, "wb")
        with closing(urllib.request.urlopen(download_url)) as request:
            shutil.copyfileobj(request, target_file, CHUNK_SIZE)
        # Ancient unresolved bug. WTF python: https://bugs.python.org/issue27973
        urllib.request.urlcleanup()
    except Exception:
        failure_template = "Exception caught while downloading file from: %s"
        logger.exception(failure_template, download_url, downloader_job=job.id)
        job.failure_reason = failure_template % download_url
        job.success = False
        return job
    finally:
        target_file.close()
    job.success = True
    return job