當前位置:首頁 » 編程語言 » wsgipython

wsgipython

發布時間: 2022-05-16 09:17:18

⑴ WSGI python的問題

多開一個埠有什麼問題?127.0.0.1:xxx 埠並不會被外界訪問,基本沒有安全問題。或者,讓 fastcgi 程序跑在 UNIX socket 上,這是文件系統的一個文件,不佔用 TCP/IP 埠號。python - Django, nginx, FastCGI兩個程序之間通信,總需要一個埠,要麼 TCP/IP,要麼 UNIX socket。如果要讓 Python 解釋器直接跑在 Nginx 引擎里,這就類似 Apache mod_python 的做法了,會讓進程變重。OpenResty.org 是在 nginx 里跑 Lua,Python 還沒聽說過。

⑵ 後綴名為『wsgi』的文件是什麼文件在python中可以作為模塊導入嗎

你用任何的文本編輯器打開看看,如果是python的script,就可以用python導入。
後綴是wsgi的一般是用python寫的wsgi程序。

⑶ Python幾種主流框架比較

Django:Python界最全能的Web開發框架,各種功能完備,可維護性和開發速度都非常強大。常有人說Django慢,其實主要慢在Django
ORM與資料庫的交互上,所以是否選擇使用Django,取決於項目對資料庫交互性的要求以及各種優化。
而對於Django的同步特性導致吞吐量小的問題,其實可以通過Celery等解決,不算是什麼根本問題。Django代表的項目有:Instagram、guardian等。
Flask:屬於微框架的典範,也是Python代碼寫的最好的項目之一。Flask框架的靈活性很高,但也是一把雙刃劍,能用好Flask的,可以做成Pinterest,用不好就沒有什麼太大的作用了。Flask雖然屬於微框架,但也可以做成規模化的Flask,加上flask可以自由選擇自己的資料庫交互組件,再加上celery+redis等非同步特性以後,flask框架的性能非常不錯,之所以很多團隊選擇flask框架,主要原因就是對靈活性的要求。
Tornado:天生非同步,性能強悍,這是它的代名詞。對比Django而言,Tornado屬於較為原始的框架,諸多內容需要自己去處理。不過,隨著項目的不斷壯大,框架能夠提供的功能佔比越來越小,更多的內容需要團隊自己去實現,而大項目往往需要性能的保證,這時候Tornado就是非常不錯的選擇。代表項目:知乎等。

⑷ 如何使用WSGI部署Django

如何使用Apache 和mod_wsgi 部署Django¶
用Apache 和 mod_wsgi 部署Django項目是一個第三方的,測試的方法來得到Django生產環境。
mod_wsgi是一個Apache模塊,可以託管任何Python WSGI應用程序,包括Django。Django將與支持mod_wsgi的任何版本的Apache一起工作。
官方mod_wsgi文檔是太棒了!它是所有關於如何使用mod_wsgi的細節的來源。您可能需要先從安裝和配置文檔開始。
Basic configuration¶
一旦您安裝並激活了mod_wsgi,請編輯Apache伺服器的httpd.conf文件並添加以下內容。如果你的Apache版本低於2.4, 請將 Requireall granted 替換成 Allow from all 並在上一行添加 Order deny,allow .
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIScriptAlias行中的第一個位是您要在其上(/指示根URL)的服務應用程序的基本URL路徑,第二個位置是「 WSGI文件「 - 見下面 - 在您的系統上,通常在您的項目包(在本例中mysite)。這告訴Apache使用該文件中定義的WSGI應用程序來提供給定URL下面的任何請求。
The WSGIPythonPath line ensures that your project package is available for import on the Python path; in other words, that importmysite works.
The <Directory> piece just ensures that Apache can access your wsgi.py file.
接下來,我們需要確保這個wsgi.py與WSGI應用程序對象存在。從Django版本1.4起,startproject將為您創建一個;否則,您需要創建它。請參閱WSGI overview documentation以獲取您應該放入此文件的默認內容,以及您可以添加到其中的其他內容。
警告
如果多個Django站點在單個mod_wsgi進程中運行,則所有這些站點將使用首先運行的設置。這可以通過改變:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

在wsgi.py中:
os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"

或者通過using mod_wsgi daemon mode,並確保每個站點在其自己的守護進程中運行。
使用虛擬機¶
If you install your project』s Python dependencies inside a virtualenv, you』ll need to add the path to this virtualenv』s directory to your Python path as well. 如果你的python項目在一個依賴虛擬機的python環境中,你需要將路徑添加虛擬機的site-packages目錄到你的python路徑To do this, add an additional path to your WSGIPythonPath directive, with multiple paths separated by a colon (:) if using a UNIX-like system, or a semicolon (;) if using Windows.如果目錄路徑的任何部分包含空格字元,則必須引用WSGIPythonPath的完整參數字元串:
WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages

請確保為您的virtualenv指定正確的路徑,並將正確的Python版本替換為python3.X。python3.4)。
採用mod_wsgi守護進程模式¶
「Daemon模式」是運行mod_wsgi的推薦模式(在非Windows平台上)。需要通過WSGIDaemonProcess和WSGIProcessGroup指令來實現Django實例運行在守護進程組中如果使用守護程序模式,則上述配置所需的進一步更改是您不能使用WSGIPythonPath;而應使用WSGIDaemonProcess的python-path選項,例如:
WSGIDaemonProcess example.com python-path=/path/to/mysite.com:/path/to/venv/lib/python2.7/site-packages
WSGIProcessGroup example.com

如果您要在子目錄(本示例中為)中投放您的項目,可以將WSGIScriptAlias添加到上面的配置中:
WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com

See the official mod_wsgi documentation for details on setting up daemon mode.
Serving files¶
Django不提供文件本身;它將該作業留給您選擇的任何Web伺服器。
我們建議使用單獨的Web伺服器(即不運行Django的伺服器)來提供媒體。這里有一些很好的選擇:
Nginx
Apache的精簡版本
但是,如果您無法選擇在與Django相同的Apache VirtualHost上提供媒體文件,則可以將Apache設置為將某些網址用作靜態媒體,而將其他網址用於Django的mod_wsgi介面。
This example sets up Django at the site root, but explicitly serves robots.txt, favicon.ico, any CSS file, and anything in the /static/ and /media/ URL space as a static file. 所有其他網址將使用mod_wsgi:
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico

Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

If you are using a version of Apache older than 2.4, replace Require all granted with Allow from all and also add the line Orderdeny,allow above it.
Serving the admin files¶
當django.contrib.staticfiles位於INSTALLED_APPS中時,Django開發伺服器會自動提供管理應用程序(以及任何其他已安裝的應用程序)的靜態文件。但是,當您使用任何其他伺服器布局時不是這樣。您負責設置Apache,或您使用的任何Web伺服器,以提供管理文件。
管理文件位於Django發行版的django/contrib/admin/static/admin中。
We strongly recommend using django.contrib.staticfiles to handle the admin files (along with a Web server as outlined in the previous section; this means using the collectstatic management command to collect the static files in STATIC_ROOT, and then configuring your Web server to serve STATIC_ROOT at STATIC_URL), but here are three other approaches:
在文檔根目錄中創建一個指向管理靜態文件的符號鏈接(這可能需要Apache配置中的+FollowSymLinks)。
使用如上所示的Alias指令,將適當的網址(可能是STATIC_URL + admin/)別名到管理文件的實際位置。
復制admin靜態文件,使它們存在於Apache文檔根目錄下。
Authenticating against Django』s user database from Apache¶
Django提供了一個處理程序,允許Apache直接對Django的身份驗證後端進行身份驗證。請參閱mod_wsgi authentication documentation。
If you get a UnicodeEncodeError¶
如果您正在利用Django的國際化功能(請參閱Internationalization and localization),並且您打算允許用戶上傳文件,則必須確保用於啟動Apache的環境配置為接受非-ASCII文件名。如果未正確配置環境,則在調用類似於os.path中的函數時,將觸發UnicodeEncodeError異常,該函數包含非ASCII字元。
為了避免這些問題,用於啟動Apache的環境應包含類似於以下內容的設置:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

請查閱您的操作系統的文檔以獲取適當的語法和位置來放置這些配置項; /etc/apache2/envvars是Unix平台上的常見位置。將這些語句添加到環境後,重新啟動Apache。
目錄
如何使用Django與Apache和mod_wsgi
基本配置
使用virtualenv
使用mod_wsgi守護程序模式
提供文件
提供管理文件
對來自Apache的Django用戶資料庫進行身份驗證
如果您得到UnicodeEncodeError
瀏覽
上一頁:如何使用WSGI部署
下一步:對來自Apache的Django用戶資料庫進行身份驗證
你在這里:
Django 1.8.2.dev20150513143415 documentation
部署Django
如何使用Django與Apache和mod_wsgi
如何使用WSGI進行部署
「操作指南」
這一頁
顯示源
快速搜索
輸入搜索字詞或模塊,類或函數名稱。
最後更新:
2015年5月13日

⑸ wsgi.py是view文件嗎

wsgi.py是view文件
所有文件和」程序「都可以用文本編輯器搞定,因為python是解釋執行的,寫好.py源碼即可;apache的配置文件也都是純文本文件。
文本編輯器推薦Notepad++,windows記事本太弱。。
關於具體的操作步驟,建議題主仔細網路一下,有很多教程可以參考。這里沒法一兩句話說清楚。
Web伺服器網關介面(Python Web Server Gateway Interface,縮寫為WSGI)是為Python語言定義的Web伺服器和Web應用程序或框架之間的一種簡單而通用的介面。

⑹ 如何部署python web程序

Python Web 程序的部署方案
綜合而言, 高性能的Python web站點部署方式首推 nginx + uwsgi
apache + mod_wsgi 是簡單穩定但性能一般的方式
API伺服器 可以直接使用tornado或者gevent
mod_python
非常原始的cgi模式部署python已經沒有什麼好介紹了。對於不太追求性能的管理系統和網站來說,使用 Apache 部署是一個不錯的選擇。較早的時候,使用 mode_python 部署python的web應用十分流行,在Django 0.96 的時候官方文檔甚至推薦這種方式。
它將Python解釋器嵌入到Apache server,以提供一個訪問Apache server內部的介面。mod_python 在現在看來性能是不佳的,每一個http請求 mod_python 都會由一個進程初始化python解釋器、載入代碼、執行、然後銷毀進程。
mod_wsgi
如果非要用Apache來部署python應用,mod_wsgi是一個更好的選擇。WSGI 全稱是 Web Server Gateway Interface ,由 PEP-333 定義。 基本上所有的python web框架都實現了wsgi介面,用mod_wsgi 能部署任何實現了wsgi的框架。實際上,不需要任何框架也可以用mod_wsgi 部署python程序。使用mod_wsgi的daemon模式,python程序會常駐內存,不會有很大的初始化和銷毀進程方面的開銷,所以性能是好於mod_python的。綜合來說,使用Apache部署python web程序,推薦使用mod_wsgi的daemon模式。
Fastcgi
先說觀點:不建議用fastcgi的方式部署Python web。
前幾年由於lighttpd風頭正勁和豆瓣的成功案例,fastcgi是一種很流行的部署方式。fastcgi與具體語言無關,也與web伺服器無關。是一種通用的部署方式。fastcgi是對於cgi的增強,CGI程序運行在獨立的進程中,並對每個Web請求建立一個進程。面對大量請求,進程的大量建立和消亡使操作系統性能大大下降。
與為每個請求創建一個新的進程不同,FastCGI使用持續的進程來處理一連串的請求。這些進程由FastCGI伺服器管理,而不是web伺服器。 當進來一個請求時,web伺服器把環境變數和這個頁面請求通過一個socket比如FastCGI進程與web伺服器都位於本地)或者一個TCP connection(FastCGI進程在遠端的server farm)傳遞給FastCGI進程。
主流的web伺服器,Apache,lighttpd,nginx 都支持fastcgi,在幾年前,lighttpd的mod_fcgi模塊性能強勁,lighttpd+fastcgi十分流行。無論是python,ruby還是php,都有大量的站點使用這種方式部署。由於nginx的崛起,現在很少有人使用lighttpd了。
fastcgi 並不是專門為python設計,並不是所有的python框架天然的支持fastcgi,通常需要flup這樣的容器來配適。flup由python編寫,和專門的c實現的wsgi容器比起來性能顯得相當不堪。fastcgi的穩定性對於新興的wsgi容器來說也有差距。無論從哪個方面來看,部署python web程序,fastcgi 都已經是過去式。
uwsgi
前幾年nginx還未內置uwsgi模塊的時候,部署uwsgi還是一件挺麻煩的事情。隨著能夠在nginx中直接使用uwsgi模塊,uwsgi已經是最可靠,最方便的高性能python web程序的部署方式了。
在1U的四核XEON伺服器上,一個簡單的wsgi handler甚至能用AB壓到8000以上的qps,這已經是完爆tornado,接近gevent的性能了。 同時,uwsgi的穩定性極好。之前我們有個每天500w-1000w動態請求的站點使用uwsgi部署非常穩定,在一個渣HP 1U 伺服器上,基本不用管它。
上面提到的部署方式都是相對於web網站的方式,在移動互聯網的時代,我們需要的是高性能的API服務,上面這些都是過時的東西。
tornado
tornado 號稱高性能,如果拿他寫網站,其實一般般,只不過跟uwsgi加一些簡單框架差不多而已。它真正的作用,是用來寫API伺服器和長連接的伺服器。
由於tornado能夠直接處理http請求,很多人直接拿他來裸奔直接提供服務。這種方式是不可取的,單線程的tornado只能利用cpu的一個核心,並且一旦阻塞直接就廢了。通常情況下,由supervisor啟動多個tornado進程,通過nginx進行反向代理負載均衡。nginx 1.14 以後的版本反向代理支持長連接,配合tornado的comet效果很好。
tornado還有一些比較奇葩的用法,比如用來做wsgi容器之類的。
gevent
gevent是一個神器,能做的事情很多。在web方面,處理http請求,用起來其實跟tornado差不多,但是要簡陋很多,cookie之類的都沒有。用gevent寫的一些API服務,部署方式還是類似tornado,用supervisor管理多個守護進程,通過nginx做負載均衡。 同樣的它的奇葩用法也和tornado一樣,可以當wsgi容器用。

⑺ python webservice和wsgi的區別

WSGI是Web Server Gateway Interface的縮寫。以層的角度來看,WSGI所在層的位置低於CGI。但與CGI不同的是WSGI具有很強的伸縮性且能運行於多線程或多進程的環境下,這是因為WSGI只是一份標准並沒有定義如何去實現。實際上WSGI並非CGI,因為其位於web應用程序與web伺服器之間,而web伺服器可以是CGI,mod_python(註:現通常使用mod_wsgi代替),FastCGI或者是一個定義了WSGI標準的web伺服器就像python標准庫提供的獨立WSGI伺服器稱為wsgiref。
Web service是一個平台獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可使用開放的XML(標准通用標記語言下的一個子集)標准來描述、發布、發現、協調和配置這些應用程序,用於開發分布式的互操作的應用程序。[1]
Web Service技術, 能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什麼, 都可以相互交換數據。Web Service是自描述、 自包含的可用網路模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標准以及已有的一些技術,諸如標准通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。
有些webservice是構建在wsgi上的,不過也可以不用的,兩個不是同一個東西

⑻ 使用python的WSGI介面做的一個web應用,瀏覽器訪問出現中文的時候顯示亂碼

我這邊沒有報錯,你的文件編碼是utf8的,你的path_info編碼應該也是utf8的,不應該使用gb2312解碼呀。

如果解決了您的問題請採納!
如果未解決請繼續追問

⑼ 關於python的wsgi問題,向各位大神求助

dows下python+wsgi配置!(求大神看下哪裡錯了)
LoadMole mod_wsgi_mole mole/mod_wsgi.so
<Directory "E:/site">
Options ExecCGI
AddHandler wsgi-script .py
Order allow,deny
Allow from all

</Directory>
這是我的配置信息,重啟apache一直錯誤,反復搞不定,還有啥地方不對?是不要將py安裝目錄加path?還是哪裡,或者機器不能安裝倆個版本的py?(我安裝了2.6和3.3)就這樣的配置怎麼啟動py解釋器呢!求大神給我看下把

⑽ 如何運行python wsgi app

這個要放在WEB伺服器上運行,安裝WEB服務軟體IIS 等
然後安裝相應python的模塊就可以運行了

熱點內容
希沃安卓下載安裝應用在哪裡 發布:2024-03-29 08:22:51 瀏覽:630
python和excel 發布:2024-03-29 07:47:03 瀏覽:860
postfix源碼下載 發布:2024-03-29 07:42:03 瀏覽:142
怎麼在電腦上玩手機伺服器 發布:2024-03-29 07:30:13 瀏覽:141
倍福加密 發布:2024-03-29 07:24:42 瀏覽:844
如何用密碼鎖住並隱藏工作表 發布:2024-03-29 07:03:28 瀏覽:327
按鍵精靈滑鼠腳本 發布:2024-03-29 06:47:41 瀏覽:20
pythonhome 發布:2024-03-29 06:47:36 瀏覽:170
dns配置錯誤怎麼修理 發布:2024-03-29 06:36:15 瀏覽:981
電信客戶6位密碼是什麼 發布:2024-03-29 06:35:42 瀏覽:566