Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

uwsgi python3 plugin doesn't work

i compiled uwsgi with make and it's successfully done,and now i decide to run my django1.5 site with python3.3 . i've checked for the doc (http://projects.unbit.it/uwsgi/wiki/Guide4Packagers) and set up python3.3 development headers through apt-get and then compile the plugin by:

python3.3 uwsgiconfig.py --plugin plugins/python package python33

then it says:

using profile: buildconf/package.ini
detected include path: ['/usr/lib/gcc/i686-linux-gnu/4.7/include', '/usr/local/include','/usr/lib/gcc/i686-linux-gnu/4.7/include-fixed', '/usr/include/i386-linux-gnu', '/usr/include']
*** uWSGI building and linking plugin plugins/python ***
[i686-linux-gnu-gcc -pthread] /usr/lib/uwsgi/python33_plugin.so
*** python33 plugin built and available in /usr/lib/uwsgi/python33_plugin.so ***

it seems all is well done and i do find python33_plugin.so in that dir. nginx is running and is ok,now my uwsgi ini file is like this:

[uwsgi]  
socket=0.0.0.0:8000 
listen=20
master=true
pidfile=/usr/local/nginx/uwsgi.pid
processes=2
plugins=python33
module=django_wsgi
pythonpath=
profiler=true
memory-report=true
enable-threads=true
logdate=true
limit-as=6048

and when i run "sudo ./uwsgi uwsgi.ini",

[uWSGI] getting INI configuration from uwsgi.ini
open("./python33_plugin.so"): No such file or directory [core/utils.c line 3347]
!!! UNABLE to load uWSGI plugin: ./python33_plugin.so: cannot open shared object file: No such file or directory !!!

it doesn't find the .so file.anyway then i copy the .so file to the uwsgi dir,and run again,

[uWSGI] getting INI configuration from uwsgi.ini
Sun Apr 28 22:54:40 2013 - *** Starting uWSGI 1.9.8 (32bit) on [Sun Apr 28 22:54:40 2013] ***
Sun Apr 28 22:54:40 2013 - compiled with version: 4.7.3 on 28 April 2013 21:25:27
Sun Apr 28 22:54:40 2013 - os: Linux-3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:19:42 UTC 2013
Sun Apr 28 22:54:40 2013 - nodename: bill-Rev-1-0
Sun Apr 28 22:54:40 2013 - machine: i686
Sun Apr 28 22:54:40 2013 - clock source: unix
Sun Apr 28 22:54:40 2013 - pcre jit disabled
Sun Apr 28 22:54:40 2013 - detected number of CPU cores: 4
Sun Apr 28 22:54:40 2013 - current working directory: /media/bill/cloud/cloud/program/kkblog/kkblog
Sun Apr 28 22:54:40 2013 - writing pidfile to /usr/local/nginx/uwsgi.pid
Sun Apr 28 22:54:40 2013 - detected binary path: /usr/sbin/uwsgi
Sun Apr 28 22:54:40 2013 - uWSGI running as root, you can use --uid/--gid/--chroot options
Sun Apr 28 22:54:40 2013 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
Sun Apr 28 22:54:40 2013 - your processes number limit is 31552
Sun Apr 28 22:54:40 2013 - limiting address space of processes...
Sun Apr 28 22:54:40 2013 - your process address space limit is 2046820352 bytes (1952 MB)
Sun Apr 28 22:54:40 2013 - your memory page size is 4096 bytes
Sun Apr 28 22:54:40 2013 - detected max file descriptor number: 1024
Sun Apr 28 22:54:40 2013 - lock engine: pthread robust mutexes
Sun Apr 28 22:54:40 2013 - uwsgi socket 0 bound to TCP address 0.0.0.0:8000 fd 3
Sun Apr 28 22:54:40 2013 - Python version: 2.7.4 (default, Apr 19 2013, 18:35:44)  [GCC 4.7.3]
Sun Apr 28 22:54:40 2013 - Python main interpreter initialized at 0x973e2d0
Sun Apr 28 22:54:40 2013 - python threads support enabled

i'm using ubuntu 13.04 and python2.7 and python3.3 are preinstalled.

I SET THE PYTHON33 PLUGIN BUT UWSGI STILL LAUNCHES PYTHON2.7 ,why?

anybody who ever met this problem? and by the way i don't like to setup uwsgi and plugins through apt-get,because it won't work at any PaaS.

thanks!

like image 742
Bill Phun Avatar asked Apr 28 '13 15:04

Bill Phun


People also ask

What port does uwsgi run on?

The uWSGI HTTP/HTTPS router In standalone mode you have to specify the address of a uwsgi socket to connect to. This will spawn a HTTP server on port 8080 that forwards requests to a pool of 4 uWSGI workers managed by the master process.

How do I know if uwsgi is installed?

sock socket files in the /run/uwsgi directory. Check for the existence of the socket files within the /run/uwsgi directory by typing: sudo ls /run/uwsgi.

How uwsgi works?

uwsgi (all lowercase) is the native binary protocol that uWSGI uses to communicate with other servers. uWSGI is often used in conjunction with web servers such as Cherokee and Nginx, which offer direct support for uWSGI's native uwsgi protocol, to serve Python web applications such as Django.

What is uwsgi plugin python?

WSGI plugin for uWSGI (Python 2)uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular.


1 Answers

You have built a monolithic uWSGI binary with python 2.7 embedded so a plugin cannot overwrite that area of memory. You can build a simple monolithic python3 binary using:

python3 uwsgiconfig.py --build

or using pip for python3

Otherwise you can build a fully modular system with:

python uwsgiconfig.py --build core
python uwsgiconfig.py --plugin plugins/python core python27
python3 uwsgiconfig.py --plugin plugins/python core python33
like image 171
roberto Avatar answered Sep 21 '22 08:09

roberto