第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

ThreadingTCPServer 與 ThreadingMixIn HTTPServer

ThreadingTCPServer 與 ThreadingMixIn HTTPServer

忽然笑 2022-06-14 11:00:25
我編寫(xiě)了兩臺(tái)服務(wù)器,它們本質(zhì)上用不同的方法做同樣的事情。兩者都是具有圍繞套接字對(duì)象的非阻塞 ssl 包裝器的網(wǎng)絡(luò)服務(wù)器。線程允許同時(shí)處理多個(gè)請(qǐng)求。一個(gè)使用 ThreadingTCPServer,另一個(gè)調(diào)用 HTTPServer 模塊上的 ThreadingMixIn。我應(yīng)該使用哪一個(gè),如果其中任何一個(gè)比另一個(gè)更好,為什么?HTTPServer 上的 ThreadingMixIn:#!/usr/bin/env python3# -*- coding: utf-8 -*-import os, sslfrom socketserver import ThreadingMixInfrom http.server import SimpleHTTPRequestHandler, HTTPServerMYSERV_WORKDIR = "/media/kingdian/server_pub"#MYSERV_CLIENTCRT = "/home/ran/keys/client.pem"MYSERV_FULLCHAIN = "/home/ran/.acme.sh/example.com_ecc/fullchain.cer"MYSERV_PRIVKEY = "/home/ran/.acme.sh/example.com_ecc/example.com.key"global sslcontextsslcontext = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)sslcontext.options |= ssl.OP_NO_TLSv1sslcontext.options |= ssl.OP_NO_TLSv1_1#sslcontext.options |= ssl.OP_NO_TLSv1_2#sslcontext.protocol = ssl.PROTOCOL_TLS#sslcontext.verify_mode = ssl.CERT_REQUIREDsslcontext.set_ciphers("ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305")sslcontext.set_ecdh_curve("secp384r1")#sslcontext.load_verify_locations(MYSERV_CLIENTCRT)sslcontext.load_cert_chain(MYSERV_FULLCHAIN, MYSERV_PRIVKEY)class HSTSHandler(SimpleHTTPRequestHandler):    def end_headers(self):        self.send_header("Strict-Transport-Security", "max-age=63072000; includeSubDomains; preload")        self.send_header("Content-Security-Policy", "default-src 'self'")        self.send_header("X-Content-Type-Options", "nosniff")        self.send_header("X-Frame-Options", "SAMEORIGIN")        self.send_header("X-XSS-Protection", "1; mode=block")        self.send_header("Referrer-Policy", "no-referrer")        SimpleHTTPRequestHandler.end_headers(self)class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):    daemon_threads = True
查看完整描述

1 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

這些幾乎是兩種不同的方式來(lái)獲得相同的最終結(jié)果。如果您查看 的實(shí)現(xiàn)ThreadingTCPServer,那就是:

class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass

在另一個(gè)示例中,HTTPServer它只是一個(gè)非常小的包裝器TCPServer(添加一個(gè)覆蓋server_bind以存儲(chǔ)服務(wù)器主機(jī)名并自動(dòng)設(shè)置allow_reuse_address),然后您的代碼直接添加ThreadingMixIn.

因此,最終,無(wú)論哪種方式,您都會(huì)經(jīng)歷相同的基本代碼。隨著時(shí)間的推移,python 庫(kù)中的類層次結(jié)構(gòu)發(fā)生了輕微的變化,因此不同的代碼示例最終以不同的組合來(lái)做事。

就個(gè)人而言,對(duì)于您的示例,我發(fā)現(xiàn)使用ThreadingTCPServer更清潔的版本,只是因?yàn)樵谄渌胤教幚砹艘粋€(gè)額外的類,因此代碼略小。OTOH,另一個(gè)版本允許更多的靈活性,因?yàn)槟呀?jīng)定義了一個(gè)可以控制線程混合屬性的點(diǎn),HTTPServer如果這對(duì)您來(lái)說(shuō)很重要,您還可以獲得額外的包裝位。


查看完整回答
反對(duì) 回復(fù) 2022-06-14
  • 1 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)