django 多线程 + uWSGI 多线程 遇到的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 多线程 + uWSGI 多线程 遇到的坑相关的知识,希望对你有一定的参考价值。

参考技术A

当django中使用了多线程时,由于uwsgi默认不开启多线程,所以我们需要为uwsgi手动开启多线程。

闲言少叙,直接上配置。

在uwsgi 的配准文件 uwsgi.ini 中 增加下面的 threads 字段

这样就可开启多线程。

django部署的一个爬虫服务。客户端发送一个请求后,django立即开启一个线程,去执行耗时的爬虫任务, django不等待爬虫结果,便先返回给客户端“请等待”的提示,在爬虫任务执行完毕后,再通过轮询或websocket返回给客户端爬虫任务的结果。

使用 django的 runserver 运行项目没问题,但当使用 nginx+ uwsgi 运行项目时,爬虫的HTTP请求不返回结果;当使用 uwsgi单独拉起项目时,爬虫的HTTP返回结果但速度奇慢。

最后发现是uwsgi 默认不支持多线程,需要开启多线程(方法如上),即可解决问题。

远程线程注入遇到的问题

前因:

  远程线程注入dll的时候debug版的dll注入不成功,release版的dll成功,经过在网上查阅,最后在windows黑客编程技术详解里找到了解决办法

 

解决办法:

  VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)

  Debug模式选择"MTD",Release选择"MT"(我之前是MD也成功了)

  MFC的使用”选项中设置“在静态库中使用MFC”

  这个地方还没有弄很明白,如果哪位大佬有知道的还望不吝赐教

 

以上是关于django 多线程 + uWSGI 多线程 遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

PyMySQL 与 Django,多线程应用程序

Django 与字段和多线程的独特关系

[django] 利用多线程添加异步任务

Nginx之美多商城前台部署

CMDB3 完善采集端代码(ssh方案的多线程采集), 异常处理, 服务端目录结构的设计(django的app), API数据分析比对入库

在线程中使用 Django ORM 并通过使用 BoundedSemaphore 避免“太多客户端”异常