django启动uwsgi报错的解决方法


Posted in Python onApril 08, 2018

uwsgi介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  • WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
  • uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
  • 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
  • uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uwsgi性能非常高

django启动uwsgi报错的解决方法

最近在django启动uwsgi报错的时候,发现了一些错误,下面来一起看看吧

查看uwsgi.log

*** Starting uWSGI 2.0.17 (64bit) on [Thu Apr 5 17:46:15 2018] ***
compiled with version: 4.4.7 20120313 (Red Hat 4.4.7-18) on 05 April 2018 02:08:03
os: Linux-2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016
nodename: GDJ_DEV
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /xxx/xxx/xxx/xxx
writing pidfile to uwsgi.pid
detected binary path: /xxx/xxx/.virtualenvs/h1/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /xxx/xxx/xxx/xxx
your processes number limit is 100000
your memory page size is 4096 bytes
detected max file descriptor number: 100000
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on 172.21.0.5:8000 fd 4
uwsgi socket 0 bound to TCP address 127.0.0.1:33522 (port auto-assigned) fd 3
Python version: 3.6.4 (default, Mar 24 2018, 10:32:21) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]
Python main interpreter initialized at 0x1ff10d0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 416880 bytes (407 KB) for 8 cores
*** Operational MODE: preforking+threaded ***
failed to open python file xxx/uwsgi.ini
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 4865)
spawned uWSGI worker 1 (pid: 4866, cores: 2)
spawned uWSGI worker 2 (pid: 4867, cores: 2)
spawned uWSGI worker 3 (pid: 4868, cores: 2)
spawned uWSGI worker 4 (pid: 4869, cores: 2)
spawned uWSGI http 1 (pid: 4870)
--- no python application found, check your startup logs for errors ---
[pid: 4869|app: -1|req: -1/1] 118.26.10.242 () {40 vars in 777 bytes} [Thu Apr 5 17:46:31 2018] GET /user/login/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)

解决第一个报错,注意操作的先后顺序:

1.卸载uwsgi

pip uninstall uwsgi

#注意此时卸载,pip会有缓存留在系统里

2.安装pcre支持库

yum install pcre pcre-devel pcre-static

3.继续安装uwsgi,不走pip缓存

pip install uwsgi -I --no-cache-dir

#启动uwsgi,已经没有“ !!! no internal routing support, rebuild with pcre support !!! ”报错了

解决第二个报错:

需要在你的uwsgi.ini文件中module指定项目下面的wsgi:

module=xxx.wsgi

#注:xxx为项目名称,startproject那个项目名称,这个错误解决后,下面的访问错误自然而然的就解决了!

附:我的uwsgi.ini配置文件

[uwsgi]
#socket=ip:port       #使用nginx代理请求时配置,直接访问uwsgi使用http方式
http=ip:port
chdir=/xxx/xxx       #项目根目录的绝对路径
wsgi-file=xxx/uwsgi.ini  #项目目录下的uwsgi.ini
module=xxx.wsgi      #指向项目下的wsgi模块
processes=4
threads=2
master=True
py-atuo-reload=1
env=DJANGO_SETTINGS_MODULE=xxx.settings
pidfile=uwsgi.pid
daemonize=uwsgi.log

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python 字典中取值的两种方法小结
Aug 02 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
python 多线程重启方法
Feb 18 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
浅析Django中关于session的使用
Dec 30 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
解决python运行效率不高的问题
Jul 20 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
python 2.7.14安装图文教程
Apr 08 #Python
详解Python中的动态属性和特性
Apr 07 #Python
简单谈谈Python的pycurl模块
Apr 07 #Python
VSCode下好用的Python插件及配置
Apr 06 #Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 #Python
在VS Code上搭建Python开发环境的方法
Apr 06 #Python
python装饰器深入学习
Apr 06 #Python
You might like
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php命名空间学习详解
2014/02/27 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python控制Firefox方法总结
2019/06/03 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Python with语句用法原理详解
2020/07/03 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
技能比武方案
2014/05/21 职场文书
教师演讲稿开场白
2014/08/25 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS