簡體   English   中英

Python:從開發服務器遷移到生產服務器

[英]Python: moving from dev server to production server

我正在使用bottlepy框架開發應用程序。 我正在使用標准庫WSGIRefServer()來運行開發服務器。 它是單線程服務器。

現在,進入生產環境時,我將希望移至多線程生產服務器,並且有很多選擇。 假設我選擇CherryPy。

現在,在我的代碼中,我正在初始化一個wsgi應用程序。 除此之外,我還在初始化其他內容...

  • Memcached連接
  • Mako模板
  • MongoDB連接

由於標准庫wsgiref是單線程服務器,並且我只創建了一個wsgi應用程序(可調用wsgi),所以一切正常。

我想知道的是,當我轉移到多線程服務器時,我的wsgi應用程序,初始化代碼,與其他服務器的連接等將如何運行。

  • 多線程服務器將為每個線程創建一個單獨的wsgi應用程序實例。 並且會為每個新請求生成一個新線程(這意味着每個請求都有一個新的wsgi應用程序)嗎?

  • 我與memcached,mongoDB等的連接是否會在線程之間共享。 線程之間還將共享什么

  • 請說明線程服務器的請求-響應周期

通常,您的應用程序使用的是與wsgi兼容的框架,並且您不應該擔心多線程/單線程服務器端。 只要它符合wsgi,它就意味着要透明地工作,並且必須以相同的方式做出反應,而不管它是哪種服務器。

bottle.run()之前的每個代碼塊將只運行一次。 因此,每個連接(數據庫,memcached)將僅實例化一次並共享。

當您調用bottle.run() bottlepy將為您啟動wsgi服務器。 對該服務器的每個請求都會在瓶狀框架內觸發一些可調用的wsgi。 只要是單線程或多線程環境,只要您不做任何奇怪的事情,您就不會真正感興趣。

對於奇怪的事,我的意思是例如通過全局變量同步某些東西。 (這里的異常是全局request對象,對於它,bottlepy確保在適當的上下文中包含正確的請求)。

並響應列表上的第一個問題:可以在新產生的線程或線程池中的線程中計算請求(CherryPy是線程池化的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM