Python 2.7 Python多处理池+;不终止的请求

Python 2.7 Python多处理池+;不终止的请求,python-2.7,asynchronous,python-requests,Python 2.7,Asynchronous,Python Requests,我在尝试使用python请求和多处理模块异步下载文件时遇到问题。基本上我要做的就是从一个站点下载一个文件,然后上传到另一个站点进行备份 工作原理: 仅同步运行同一代码(对于循环) 异步上传 什么不起作用: 异步下载(即使池大小为1) 我看到: 没什么。在发出get请求之前,代码运行良好,并且它只是无限期地挂起 这让我觉得这可能与流式请求和异步调用存在某种冲突?我不确定是否有其他人有过这个问题,也不知道是否有人对此有所了解。以下是代码的简化版本: def async_download(file_n

我在尝试使用python请求和多处理模块异步下载文件时遇到问题。基本上我要做的就是从一个站点下载一个文件,然后上传到另一个站点进行备份

工作原理:

  • 仅同步运行同一代码(对于循环)

  • 异步上传

  • 什么不起作用:

  • 异步下载(即使池大小为1)
  • 我看到:

  • 没什么。在发出get请求之前,代码运行良好,并且它只是无限期地挂起
  • 这让我觉得这可能与流式请求和异步调用存在某种冲突?我不确定是否有其他人有过这个问题,也不知道是否有人对此有所了解。以下是代码的简化版本:

    def async_download(file_name):
        r = requests.get(url, params=file_name, cookies=cookies, stream=True)
        print 'this never runs'
        with open(file_name, 'wb') as f:
            for chunk in r.iter_content(chunk_size=1024): 
                # filter out keep-alive new chunks
                if chunk:
                    f.write(chunk)
                    f.flush()
        return file_name
    
    def finish(file_names):
        utils.deleteLocalFiles(file_names)
    
    def main():
        p = Pool(processes=1)
        result = p.map_async(async_download, file_names, callback=finish)
        result.get()`
    
    if __name__ == '__main__':
        main()
    

    你想出什么办法了吗?我在我的项目中遇到了类似的问题。@Trent不幸的是,没有,我最终不得不走同步路线。