[uWSGI] Python threading and locks

转载 2015年07月07日 15:25:30

http://lists.unbit.it/pipermail/uwsgi/2012-April/004089.html


> I have a web application written in Flask. At startup it spawns a
> background thread and waits on a threading.Event for the background thread
> to initialise before continuing. It works fine when run outside uwsgi, but
> when run in uwsgi it hangs on the lock. I know the lock has been released
> because I am writing to the log on the line before and the line after the
> line of code that releases the lock.
>
> Here is my config file, I am running uwsgi in Emperor mode:
>
> [uwsgi]
> master = true
> processes = 1
> uid=edpod
> gid=edpod
> virtualenv = /host/sites/edpod
> pythonpath = /host/sites/edpod
> module = Edpod.uwsgi
> callable = app
> socket = 127.0.0.1:6000
> enable-threads
>
> Does anyone have any ideas or can point me to some documentation around
> how
> threading works in uwsgi.
>


Hi Richard, it is not a threading problem, but a fork()-related one.

I suppose you are starting your thread in the application entry point (the
file Edpod/uwsgi.py). The master will spawn the thread and then it fork().

In the new process, the thread is no more.

The best way to solve it is in starting the thread only after the fork(),
using the uwsgi.post_fork_hook.

Another solution is in putting your stack in "lazy" mode. That means your
app is completely loaded only after each fork(). Simply add lazy = true
for that setup.

关于Python的进程线程协程之threading模块(一)Thread类

threading模块里的对象: Thread:表示一个线程的执行对象 Lock :锁源于对象 RLock:可重入锁对象,使单个线程可以再次获得已经获得的锁(递归锁定) Condit...
  • ChangerJJLee
  • ChangerJJLee
  • 2017年04月28日 13:13
  • 959

python django+uwsgi+nginx 搭建步骤(血一般的教训)

安装Django      没有pip的童鞋可以看http://blog.csdn.net/imphp/article/details/38228619安装python包管理工具pip    先...
  • timerlau
  • timerlau
  • 2014年07月28日 16:17
  • 4243

python django nginx从零开始搭建一个web网站系列1

买了个vps 系统之前是centos7,发现太素了,换成了ubuntu ubuntu自带python3 以及python2  系统没有pip3 如提示,apt-get install ...
  • oXiaoChong12345
  • oXiaoChong12345
  • 2016年09月02日 18:54
  • 2134

Python中多线程thread与threading的实现方法

Python中多线程thread与threading的实现方法 这篇文章主要介绍了Python中多线程thread与threading的实现方法,很重要的应用,需要的朋友可以参考下 ...
  • luoye7422
  • luoye7422
  • 2015年02月09日 00:28
  • 561

使用uWSGI Web服务器和Nginx部署Python WSGI应用

ZStack云计算 ,我们在之前的《Python Web服务器对比》文章中介绍过,uWSGI是一个宏大的项目,它能做的事情远远超过提供Web服务。不过很多Web应用的部署仍然青睐于它,因为它功能丰富,...
  • zstack_org
  • zstack_org
  • 2016年11月11日 09:40
  • 3290

[python] 专题八.多线程编程之thread和threading

这篇文章主要是参考Wesley J. Chun的《Python核心编程(第二版)》书籍多线程部分,并结合我以前的一些实例进行简单分析。主要包括线程基础知识、thread模块、threading模块,及...
  • Eastmount
  • Eastmount
  • 2015年12月09日 05:04
  • 15614

python threading获取线程函数返回值

最近需要用python写一个环境搭建工具,多线程并行对环境各个部分执行一些操作,并最终知道这些并行执行的操作是否都执行成功了,也就是判断这些操作函数的返回值是否为0。但是threading并没有显式的...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2014年06月05日 16:25
  • 5514

多线程在python中的使用 threading

本模块的高层线程接口构建在低层的thread模块上,相比较thread而言,threading高级函数使用简单方便。本模块定义了以下的函数和对象: threading.active_count() ...
  • Winterto1990
  • Winterto1990
  • 2015年08月23日 20:45
  • 1176

nginx uwsgi wsgi django 这些东西究竟是什么关系

1 首先nginx 是对外的服务接口,外部liu'la
  • u014761344
  • u014761344
  • 2014年10月16日 13:26
  • 7765

Python之美[从菜鸟到高手]--threading daemon线程原理解读

事情的起因是我在看下面一段代码遇到的疑惑,明明是while True,为什么代码没有死循环??class D(threading.Thread): def __init__(self, que...
  • yueguanghaidao
  • yueguanghaidao
  • 2014年10月15日 00:03
  • 15536
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[uWSGI] Python threading and locks
举报原因:
原因补充:

(最多只允许输入30个字)