码迷,mamicode.com
首页 > 编程语言 > 详细

django uwsgi websocket请即时关闭负线程

时间:2019-09-20 19:11:01      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:自己   demo   cti   线程   end   方法   connected   nec   sel   

  当使用django实现一些操作的时候难免会用到线程,但是有点要注意就是在函数中启动线程,setDemond=True,但是这个函数执行完了,副线程并不会关闭,因为主线程还在运行中.

  假定你的副线程中有websocket_send()的操作,如果如果没能够关闭副线程的话,运行到这句话会有一个os错误.但是如果你关掉连接又立即连上,碰巧uwsgi的线程数也是相同的话,那么这句话就能正常运行这个uwsgi还会存活着,并且新的副线程也会起来,相当于有两个副线程在给你发消息,可能会有很多很多的消息.

  关闭副线程的方法,可以用队列Queue.queue(),这个是Python自带的一个线程安全的队列库.

  或者可以在redis中存一个变量,主函数退出的时候把这个变量删掉或者赋上一个代表断线的值,副线程捕获到这个消息kill掉自己即可(raise Exception("I kill my self because connection disconnected"))

django uwsgi websocket请即时关闭负线程

标签:自己   demo   cti   线程   end   方法   connected   nec   sel   

原文地址:https://www.cnblogs.com/mangmangbiluo/p/11558736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!