加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Twisted从Django app上传异步文件

发布时间:2020-12-20 13:24:46 所属栏目:Python 来源:网络整理
导读:我们有一个Django应用程序需要通过 XML API发布消息并将文件从Web服务器上传到另一台服务器.我们需要进行X异步文件上传,然后在完成上传后再发出一个XML API请求.我也喜欢从磁盘流式传输文件,而不必先将它们完全加载到内存中.最后,我需要将文件作为applicatio
我们有一个Django应用程序需要通过 XML API发布消息并将文件从Web服务器上传到另一台服务器.我们需要进行X异步文件上传,然后在完成上传后再发出一个XML API请求.我也喜欢从磁盘流式传输文件,而不必先将它们完全加载到内存中.最后,我需要将文件作为application / octet-stream发送到POST主体(而不是更典型的表单数据MIME类型),并且我无法找到使用urllib2或httplib执行此操作的方法.

我最终将Twisted集成到了应用程序中.它对于这项任务来说似乎很完美,而且我确实能够为每次上传编写一个非常干净的实现延迟.我使用自己的IBaseProducer以块的形式从文件中读取数据,并将其发送到POST请求体中的服务器.不幸的是,我发现Twister反应器无法重新启动,所以我不能只运行它然后在我想上传文件时停止它.由于Twisted显然更多地用于成熟的服务器,我现在想知道这是否是正确的选择.

我不确定我是否应该:
a)配置WSGI容器(目前我正在使用manage.py进行测试)在启动时启动Twisted线程并使用blockingCallFromThread来触发我的文件上传.
b)使用Twisted作为Django应用程序的WSGI容器.我假设我们稍后要在Apache上进行部署,如果采用这种方法,我不确定其含义是什么.
c)只需扭曲并使用其他方法进行文件上传.有点羞耻,因为Twisted方法与延迟是优雅和工作.

我们应该选择哪一个,还是有其他选择?

解决方法

为什么要稍后在Apache上部署?扭曲是rad.我会做(b)直到有人提出具体的,令人信服的理由不这样做.然后我会做(a).幸运的是,您的应用程序代码看起来都是一样的.无论Twisted是否是你的WSGI容器,blockingCallFromThread都能正常工作 – 无论哪种方式,你只是处理在运行反应器的单独线程中运行代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读