当前位置: 首页 > 网络应用技术

如何编写多线Django(Django线程)

时间:2023-03-06 20:58:06 网络应用技术

  简介:今天,首席CTO Note将与您分享如何编写有关Django的多线程内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  #include qcoreapplication

  #include“ thread.h”

  #include QVector

  #include Qdebug

  int main(int argc,char *argv [])

  {{{

  qcoreApplication a(argc,argv);

  qVectorThread* vector;

  线程 *线程;

  //创建多个线程并开始

  for(int i = 0; i10; i ++){

  线程=新线程;

  vector.append(thread);

  线程(i);

  线程启动();

  }

  //等待所有线程执行,然后删除线程

  foreach(线程,向量){

  线程();

  }

  foreach(线程,向量){

  删除线程;

  }

  返回a.exec();

  }

  我与Django一起度过了一个环境,并创建了一个应用程序。

  如果多个请求同时提出,我想测试Django的处理,因此我在View.py中编写了代码:

  Python代码?

  DEF存档(请求):

  打印(“开始”)

  时间。

  打印(“ end”)

  返回httpresponse(“ hellowworld”)

  系统中经常有异步操作。每次触发异步操作时,都会启动一个新线程处理相关的逻辑,并且逻辑集中在I/O密集型类型中;经常出现新的/被摧毁的线程会消耗大量资源;因此,请考虑使用线程使用线程池替换现有逻辑。

  查询信息后,Python拥有可以直接实现线程池功能的ThreadPoolExecutor(明天)。它的使用方式

  请参阅ThreadPoolExecutor

  ThreadPoolExecutor建立的线程池将首先启动多个线程,并让这些线程处于睡眠状态。当提交到线程池的任务时,它将唤醒线程池中的某个睡眠线程,以使其处理此任务。处理此任务后,该线程正在睡觉。RODUCE建立了被破坏的线程池消耗量

  该项目中的实现如下(定义的装饰器)

  总体原则是:应尽可能将CPU密集型任务配置为小,并尝试与CPU的数量相似;IO强度的任务应尽可能地配置为线程,因为IO操作不占用CPU,请勿让CPU空闲,不要让其空闲。应该增加线程的数量。

  Apache或Tornado Multi -Process具有编写WSGI协议服务器来调整Django的能力

  Django是一个具有开源代码的Web应用程序框架,由Python编写。MVC软件设计模式,Model M,View V和Controller C. IT最初是为管理Lawrence Publishing Group拥有的一些网站而开发的。,这主要是新闻内容,即CMS(内容管理系统)软件。它于2005年7月在BSD许可下发布。此框架以比利时吉他手吉他手Django Reinhardt命名。

  当Django使用多线程线程时,由于UWSGI不会打开多线程默认值,因此我们需要手动打开UWSGI的多线程。

  休闲少,直接配置。

  在UWSGI的标准文件uwsgi.ini中添加以下线程字段

  这样,可以打开多线程。

  Django部署了爬网服务。客户端发送请求后,Django立即打开线程以执行时间 - 令人震惊的爬网。Django将返回客户“请等待”,而无需等待爬虫的结果。查询或Websocket的结果返回了客户爬网任务。

  可以使用Django运行RunServer运行项目,但是当使用NGINX+ UWSGI运行项目时,Reptile HTTP的HTTP请求将不会返回结果;当使用UWSGI分别拉动项目时,爬网的HTTP返回结果很慢。

  最后,发现UWSGI不支持多线程默认值。需要打开多线程(如上所述)以解决问题。

  结论:以上是由Django如何编写多线程内容的相关内容答案所编写的首席CTO注释。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?