<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def manifest_download(self):
        '''download manifest files'''
        if self.downloaders_lock.acquire(False):
            if len(self.downloaders):
                # there already exist downloader threads
                self.downloaders_lock.release()
                return

            for url in ['http://firmware.ardupilot.org/manifest.json']:
                filename = self.make_safe_filename_from_url(url)
                path = mp_util.dot_mavproxy("manifest-%s" % filename)
                self.downloaders[url] = threading.Thread(target=self.download_url, args=(url, path))
                self.downloaders[url].start()
            self.downloaders_lock.release()
        else:
            print("fw: Failed to acquire download lock")