CherryPy 多線程應(yīng)用程序服務(wù)器

2023-12-30 23:06 更新

CherryPy是基于多線程概念設(shè)計的。 每次開發(fā)人員在CherryPy命名空間中獲取或設(shè)置值時,都會在多線程環(huán)境中完成。

cherrypy.request和cherrypy.response都是線程數(shù)據(jù)容器,這意味著您的應(yīng)用程序通過知道在運行時通過它們代理哪個請求來獨立地調(diào)用它們。

使用線程模式的應(yīng)用程序服務(wù)器不被高度重視,因為線程的使用被視為增加了由于同步要求而導(dǎo)致問題的可能性。

其他選擇包括 -

Multi-process Pattern

每個請求都由自己的Python進程處理。 在這里,可以認為服務(wù)器的性能和穩(wěn)定性更好。

異步模式

在這里,接受新連接并將數(shù)據(jù)發(fā)送回客戶端是從請求過程異步完成的。 該技術(shù)以其效率而著稱。

URL調(diào)度

CherryPy社區(qū)希望更靈活,并且可以感謝調(diào)度員的其他解決方案。 CherryPy 3提供了其他內(nèi)置調(diào)度程序,并提供了一種編寫和使用自己的調(diào)度程序的簡單方法。

  • 用于開發(fā)HTTP方法的應(yīng)用程序。 (GET,POST,PUT等)
  • 定義URL中路由的路由 - 路由調(diào)度程序

HTTP方法調(diào)度程序

在某些應(yīng)用程序中,URI與操作無關(guān),操作由資源上的服務(wù)器執(zhí)行。

例如, http://xyz.com/album/delete/10

URI包含客戶端希望執(zhí)行的操作。

默認情況下,CherryPy調(diào)度程序?qū)⒁韵铝蟹绞接成?-

album.delete(12)

上面提到的調(diào)度員是正確提到的,但可以通過以下方式獨立 -

http://xyz.com/album/10

用戶可能想知道服務(wù)器如何調(diào)度確切的頁面。 此信息由HTTP請求本身承載。 當(dāng)有來自客戶端到服務(wù)器的請求時,CherryPy看起來是最合適的處理程序,處理程序是URI所針對的資源的表示。

DELETE /album/12 HTTP/1.1

路線調(diào)度員

以下是調(diào)度所需方法的參數(shù)列表 -

  • name參數(shù)是要連接的路由的唯一名稱。
  • 路由是匹配URI的模式。
  • 控制器是包含頁面處理程序的實例。
  • 使用Routes調(diào)度程序連接與URI匹配的模式并關(guān)聯(lián)特定的頁面處理程序。

例子 (Example)

讓我們舉一個例子來了解它是如何工作的 -

import random
import string
import cherrypy
class StringMaker(object):
   @cherrypy.expose
   def index(self):
      return "Hello! How are you?"
   @cherrypy.expose
   def generate(self, length=9):
      return ''.join(random.sample(string.hexdigits, int(length)))
if __name__ == '__main__':

按照下面給出的步驟獲取上述代碼的輸出 -

Step 1 - 將上述文件另存為tutRoutes.py 。

Step 2 - 訪問以下網(wǎng)址 -

http://localhost:8080/generate?length=10

Step 3 - 您將收到以下輸出 -

路線調(diào)度員


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號