uwsgi、virtualenv 、pypy和flask

來源:互聯網
上載者:User

標籤:style   class   blog   code   java   http   

    當前linux發行版python版本預設基本上都是2.7的,如果系統中有了python3.0以後的,或者自己安裝了

python3.3,但是用pip或者easy_install安裝python3的module並不很方面,使用virtualenv就方便多了,

安裝pypy環境較好的辦法也是用virtualenv。通過如下:

virtualenv -p /path/to/python3 dir_name

當然前提是你安裝了virtualenv,如下安裝: 

      sudo apt-get install python-virtualenv或者sudo pip install virtualenv。

用virtualenv會在目前的目錄中產生dir_name目錄,這樣就產生了python3的虛擬環境,具體使用就不囉嗦了,

畢竟virtualenv網上介紹的很多了。

   那麼同樣的方法我們用virtualenv -p /path/to/pypy virtualpypy,建立一個virtualpypy目錄。進入

virtualpypy,然後source bin/activate,在使用pip或者easy_install安裝的庫就可以了,比如安裝了flask,

想讓uwsgi運行起來有點麻煩,需要用pip在虛擬環境中安裝uwsgi:pip install uwsgi,這樣會編譯一個

適合pypy的uwsgi。

 uwsgi.xml檔案如下:

 1 <uwsgi> 2   <socket>0.0.0.0:6001</socket> 3   <listen>20</listen> 4   <chdir>/path/to/virtualpypy</chdir> 5 <pythonpath>/path/to/virtualpypy</pythonpath> 6 <virtualenv>/path/to/virtualpypy</virtualenv> 7 <processes>3</processes> 8   <master>true</master> 9   <pidfile>/path/to/virtualpypy/uwsgi.pid</pidfile>10   <wsgi-file>/path/to/virtualpypy/application.py</wsgi-file>11   <profiler>true</profiler>12   <memory-report>true</memory-report>13   <enable-threads>true</enable-threads>14 <no-site>true</no-site>15 <pypy-lib>/path/to/virtualpypy/libpypy-c.so</pypy-lib>16   <logdate>true</logdate>17   <limit-as>6048</limit-as>18 </uwsgi>

         注意第15行,如果沒有libpypy-c.so這個動態連結程式庫,uwsgi -x uwsgi.xml就會報錯。

我們就需要下載或者編譯一個libpypy-c.so。

下載http://projects.unbit.it/downloads/pypy/libpypy-c-x86_64.so

編譯就需要下載pypy源碼tarball了,本人用的pypy-2.3.1,

./rpython/bin/rpython -Ojit --shared --gcrootfinder=shadowstack pypy/goal/targetpypystandalone

 

       本人4G記憶體,64位機花費了1小時多編譯完成。會產生libpypy-c.so和pypy-c兩個重要的檔案。

既然網上提供了為何還要費勁編譯,這就是問題所在,由於用apt-get安裝的pypy版本與從網上下載先來的

libpypy-c-x86_64.so可能版本不同導致出現下面的錯誤:

debug: OperationError:

debug:  operror-type: AssertionError

debug:  operror-value: 

       所以如果沒有出錯最好,出錯了還是編譯一個吧,把libpypy-c.so放到動態連結路的預設路徑下或者

LD_LIBRARY_PATH環境變數裡。把pypy-c利用virtualenv -p /path/to/pypy-c virtualnew建立虛擬環境,

再同上面的方法安裝flask或者django、uwsgi.

Wed Jun 25 00:41:26 2014 - uwsgi socket 0 bound to TCP address 0.0.0.0:6001 fd 3Initialized PyPy with Python 2.7.6 (32f35069a16d819b58c1b6efb17c44e3e53397b2, Jun 23 2014, 15:54:22)[PyPy 2.3.1 with GCC 4.8.2]PyPy Home: /path/to/virtualnewWed Jun 25 00:41:27 2014 - your server socket listen backlog is limited to 20 connectionsWed Jun 25 00:41:27 2014 - your mercy for graceful operations on workers is 60 secondsWed Jun 25 00:41:27 2014 - mapped 291072 bytes (284 KB) for 3 coresWed Jun 25 00:41:27 2014 - *** Operational MODE: preforking ***Wed Jun 25 00:41:27 2014 - *** no app loaded. going in full dynamic mode ***Wed Jun 25 00:41:27 2014 - *** uWSGI is running in multiple interpreter mode ***Wed Jun 25 00:41:27 2014 - spawned uWSGI master process (pid: 1566)Wed Jun 25 00:41:27 2014 - spawned uWSGI worker 1 (pid: 1569, cores: 1)Wed Jun 25 00:41:27 2014 - spawned uWSGI worker 2 (pid: 1570, cores: 1)Wed Jun 25 00:41:27 2014 - spawned uWSGI worker 3 (pid: 1571, cores: 1)

 

     pypy終於可以好好用用了,看上面紅色兩行可知pypy 2.3.1對應python 2.7.6。本人對pypy有

著相當的好感,它不僅在運行flask、django等項目上比python要快(之前的文章本人就介紹過pypy與

python計算斐波那契數列時間的比較,差了可謂一條街的距離),並且它是python開發的(rpython)。

就像java、go等許多進階語言一樣,最初雖然是c開發的,但最後都是回到了自己解釋自己。

     雖然pypy現在還有諸多問題,雖然官方python依舊是c開發的 ,但是本人希望pypy更好的發展。

     只為您的快、只為您是python寫的python解譯器。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.