tmackan
V2EX  ›  Python

测试 uwsgi 报错

By tmackan at 2016 年 8 月 23 日 · 10349 次点击

最近在用 uwsgi+nginx+virtualenv 部署一个项目

测试 uwsgi

# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

然后在 cmd 在运行 uwsgi --http :8001 --wsgi-file /alidata/websites/LandsBLog/test.py&

显示:

***Starting uWSGI 2.0.13.1 (64bit) on [Tue Aug 23 13:16:46 2016] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-4) on 19 August 2016 14:24:34
os: Linux-3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015
nodename: iZ230ph83b2Z
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /alidata/websites/LandsBLog
detected binary path: /root/.virtualenvs/blog/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 7283
your memory page size is 4096 bytes
detected max file descriptor number: 65535
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :8001 fd 4
spawned uWSGI http 1 (pid: 2399)
uwsgi socket 0 bound to TCP address 127.0.0.1:45777 (port auto-assigned) fd 3
Python version: 3.4.1 (default, Aug 19 2016, 10:38:55)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x25ccb10
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 72768 bytes (71 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x25ccb10 pid: 2398 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 2398, cores: 1)

正常情况下,通过浏览器访问 ip:8001 ,会显示 Hello World 但是我目前什么也不显示 求大神解答。

19 条回复  •  2016-08-26 15:18:17 +08:00
tmackan
   1
tmackan  
OP
   2016 年 8 月 23 日
--wsgi-file /alidata/websites/LandsBLog/test.py

路径没有问题
tmackan
   2
tmackan  
OP
   2016 年 8 月 23 日
uwsgi 安装方式:
pip install uwsgi
tmackan
   3
tmackan  
OP
   2016 年 8 月 23 日
当我浏览器中输入 ip:8001 时, cmd 显示信息如下:
```[pid: 2444|app: 0|req: 11/11] 123.121.1.79 () {38 vars in 667 bytes} [Tue Aug 23 13:47:34 2016] GET / => generated 0 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (11 switches on core 0)
[pid: 2444|app: 0|req: 12/12] 123.121.1.79 () {36 vars in 594 bytes} [Tue Aug 23 13:47:35 2016] GET /favicon.ico => generated 0 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (11 switches on core 0)
```
tmackan
   4
tmackan  
OP
   2016 年 8 月 23 日
在服务器 cmd 下运行
curl -i 'http://127.0.0.1:8001/'
显示:
HTTP/1.1 200 OK
Content-Type: text/html

并没有显示 hello world
bdbai
   5
bdbai  
   2016 年 8 月 23 日 via Android
return ["Hello World"]
lovepython
   6
lovepython  
   2016 年 8 月 23 日
你的返回值不对, return 我记得是可迭代的
tmackan
   7
tmackan  
OP
   2016 年 8 月 23 日
@lovepython
python 中字符串本身就是可以迭代的
tmackan
   8
tmackan  
OP
   2016 年 8 月 23 日
@bdbai 试了 不行呀
csdreamdong
   9
csdreamdong  
   2016 年 8 月 23 日
贴一下 uwsgi 的配置呗。
csdreamdong
   10
csdreamdong  
   2016 年 8 月 23 日
- -。。没仔细看。。要把 virtualevn 的路径加到。。 uwsgi 的启动项里。
tmackan
   12
tmackan  
OP
   2016 年 8 月 23 日
@csdreamdong
我是在已经开启了虚拟环境的情况下,运行 uwsgi --http :8001 --wsgi-file /alidata/websites/LandsBLog/test.py&命令的
日志也显示, uwsgi 和 python 都是虚拟环境中所对应的,而不是 system-side 的。
wang9571
   13
wang9571  
   2016 年 8 月 23 日   ❤️ 1
return [b"Hello World"]
要返回 bytes 型列表
tmackan
   14
tmackan  
OP
   2016 年 8 月 23 日
@wang9571 非常感谢,此为正解
tmackan
   15
tmackan  
OP
   2016 年 8 月 26 日
@wang9571
又出现另一个问题,麻烦看下
http://www.v2ex.com/t/301307#reply2
感谢
wang9571
   16
wang9571  
   2016 年 8 月 26 日
@tmackan 额~~其实我只是一个初学者,还没用过 uwsgi ,这个帖子的问题并不涉及 uwsgi 我才碰巧答出来~~~
tmackan
   17
tmackan  
OP
   2016 年 8 月 26 日
@wang9571
嗯 但是有的教程中
不用指明 hello world 字符串转为 bytes 型也行
咳 也是醉了 我快被部署折腾疯了
wang9571
   18
wang9571  
   2016 年 8 月 26 日
@tmackan 不指明可能是因为那些教程适合 python2 版本的吧?我测试过: python3 必须是 bytes 型, python2 字符串与 bytes 型都可以
tmackan
   19
tmackan  
OP
   2016 年 8 月 26 日
@wang9571
ok ,明白了,那应该是版本问题
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
© 2026 V2EX · 35ms · 3.9.8.5