python cgi腳本可以將數據寫入和讀取會話嗎?如果是這樣如何?是否有高級API或必須推出自己的課程?python:與cgi腳本中的會話進行交互
4
A
回答
7
在cgi
上沒有「會話」。如果您使用原始的cgi
,您必須推出自己的會話處理代碼。
基本上,會話的工作原理是創建一個唯一的cookie號碼並將其發送到客戶端的響應頭上,然後在每個連接上檢查這個cookie。將會話數據存儲在服務器(內存,數據庫,磁盤)的某個位置,並使用cookie編號作爲密鑰,以便在客戶端發出的每個請求中檢索它。
但是cgi
不是你如何在python中爲web開發應用程序。使用wsgi
。使用Web框架。
下面是使用cherrypy的快速示例。 cherrypy.tools.sessions
是CherryPy的工具來處理cookie的設置/檢索和關聯數據自動:
import cherrypy
class HelloSessionWorld(object):
@cherrypy.tools.sessions()
def index(self):
if 'data' in cherrypy.session:
return "You have a cookie! It says: %r" % cherrypy.session['data']
else:
return "You don't have a cookie. <a href='getcookie'>Get one</a>."
index.exposed = True
@cherrypy.tools.sessions()
def getcookie(self):
cherrypy.session['data'] = 'Hello World'
return "Done. Please <a href='..'>return</a> to see it"
getcookie.exposed = True
application = cherrypy.tree.mount(HelloSessionWorld(), '/')
if __name__ == '__main__':
cherrypy.quickstart(application)
注意,這個代碼是wsgi
應用,在這個意義上,你可以將其發佈到任何使能的wsgi
Web服務器(Apache的有mod_wsgi
)。此外,CherryPy的有自己的wsgi
服務器,這樣你就可以只運行與Python代碼,它會開始http://localhost:8080/
1
服務我的「低成本」的網絡託管計劃不允許使用WSGI。 'mod_wsgi'apache模塊不能被使用,因爲它是一個共享的apache服務器。我正在開發自己的班級。
爲了不從零開始,我嘗試在這個網站上提供的會話類的實現:http://cgi.tutorial.codepoint.net/a-session-class
相關問題
- 1. Python子進程:與shell腳本交互
- 2. 在Linux下與Python中的GUI元素進行腳本交互
- 3. 與長時間運行的python腳本進行交互
- 4. 與pexpect中的python腳本交互
- 5. 如何與較長的python腳本進行交互?
- 6. Python腳本自動與fdisk進行交互提示
- 7. Windows PowerShell - 與Python腳本進行交互遠程PC
- 8. 如何與clisp中的ssh會話進行交互?
- 9. 在運行時與nodejs應用程序中的python腳本進行交互
- 10. 運行交互的shell腳本在python
- 11. 從Python腳本啓動交互式SSH會話
- 12. 如何與CasperJS/PhantomJS腳本中的用戶進行交互?
- 13. 與控制檯中的腳本進行交互
- 14. CGI:執行Python腳本根
- 15. 通過(Non-MPI)python腳本與MPI二進制文件進行交互
- 16. 如何在shell腳本中運行交互式python腳本?
- 17. Selenium可以與現有瀏覽器會話進行交互嗎?
- 18. 使用Python與Windows模式對話框進行交互
- 19. Python與子進程交互
- 20. 顯示PYTHON CGI腳本的進度
- 21. 獲取greasemonkey腳本與正在運行的進程交互?
- 22. htaccess如何與我的php腳本進行交互?
- 23. 如何從Python腳本中打包交互式ssh會話的調用?
- 24. Supervisord - 運行需要與終端交互的python腳本
- 25. C#客戶端 - 我如何與運行在服務器上的CGI腳本進行通信/交互?
- 26. 如何與Vagrant shell配置腳本進行交互?
- 27. 與NHibernate交互的ASP.net會話
- 28. 模擬交互式Python會話
- 29. Python交互式庫(pymidas)會話警告
- 30. 與C++進行交互
+1 WSGI ......當然在此期間,你可以通過CGI部署WSGI。事實上,它可能是一個好主意,因爲單進程運行一次方案意味着您不必擔心dev服務器上的模塊重新加載問題。 – bobince 2009-10-12 14:38:42