Don't talk nonsense, just start working!
The following are the requirements of netizens!
Install tornado
pip install tornado
Features
1. Lightweight web framework
2. Asynchronous non-blocking IO processing method
3. Excellent anti-load ability
4. Excellent processing performance, does not rely on multi-process/multi-thread, solves C10K problem to a certain extent
5. WSGI full stack alternative product , It is recommended to use its web framework and HTTP server at the same time
Code!
Public certificate server.crt
-----BEGIN CERTIFICATE-----
MIIFpjCCBI6gAwIBAgIQC2XCDsMH3j8IDaAq44wc/zANBgkqhkiG9w0BAQsFADBy
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
SW5jLjEdMBsGA1UECxMURG9tYWluIFZhbGlkYXRlZCBTU0wxHTAbBgNVBAMTFFRy
dXN0QXNpYSBUTFMgUlNBIENBMB4XDTIwMDgwNTAwMDAwMFoXDTIxMDgwNTEyMDAw
MFowHjEcMBoGA1UEAxMTamRvbmcueHVleHVlYmFuZy5jbjCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAK7KfqfGR6AW4GvWLH1EqyRKfnuKug+ZlRJTrVBg
crY0mNSNmljwA0S/JZb+dzM4Xs6zIVUrk8nqrcmidWPzUggDGelOdF11OZh94Ibt
kh+lT2J5ZYsJ4J6MSJ4bVEo8cKAcBcbWRnaTPjYT5xhyQTWxjRfjHkMk7spc+DJL
TJAf4m07DUZzZqR9dAzKhAxfLS4Hk3Ita3GOiWb4L7BOfwuIV/RILsKMWqiJvkJS
hFIf+y1YjPJzLQdXmyACb5iIpBkaa+Rya9dc+f39Nnddk1m+fYGE8OBkdEnapH7b
gbIzDX1ufleVsTV86MAvg9fPb1oBUndYM1jppldkZICN4O0CAwEAAaOCAoowggKG
MB8GA1UdIwQYMBaAFH/TmfOgRw4xAFZWIo63zJ7dygGKMB0GA1UdDgQWBBSb1gMi
x3SpsPWgor8sAu7rycykqzAeBgNVHREEFzAVghNqZG9uZy54dWV4dWViYW5nLmNu
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
TAYDVR0gBEUwQzA3BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93
d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBAgEwgZIGCCsGAQUFBwEBBIGFMIGC
MDQGCCsGAQUFBzABhihodHRwOi8vc3RhdHVzZS5kaWdpdGFsY2VydHZhbGlkYXRp
b24uY29tMEoGCCsGAQUFBzAChj5odHRwOi8vY2FjZXJ0cy5kaWdpdGFsY2VydHZh
bGlkYXRpb24uY29tL1RydXN0QXNpYVRMU1JTQUNBLmNydDAJBgNVHRMEAjAAMIIB
BQYKKwYBBAHWeQIEAgSB9gSB8wDxAHYA9lyUL9F3MCIUVBgIMJRWjuNNExkzv98M
LyALzE7xZOMAAAFzvE9LiQAABAMARzBFAiA+jWpKCK7sOMd6MLDhf27d6wXaTDQZ
4H8uIoDZL3pryAIhAKzfqm3Arnbt8fE3cB3ObEYGLQi39MdhE1XT9xE13XCUAHcA
XNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbHDsoAAAFzvE9LvAAABAMASDBG
AiEA1TCb7W5kUdwQYmH/3CDT2Pa4bGOE/0jUeq997clw52oCIQDuC/WzK/NOEadn
kTLMIdvjBf9c+ByFHhpH3OKprNmwBjANBgkqhkiG9w0BAQsFAAOCAQEAme5gtti5
O6yi/1Mnl0rvqIaRSSvQEny4zkzBp29UD3YPHb9l43PbOjB2+fECYSoBw0BJhbyO
ux+BXmPKFtoJyuSlk9Ef7WesFlyfS9wdDPoALWlnuTpUTCNoe73PentHv20NaG5I
Ky9sz2ociMdDS8CzpxN5dhIDMFvF1qfXFlMV3i998nr7CgJfsSljiJ5lvEcgmGe1
cJ2v0tnmKI7fs7vOa++5a8Byqg2YIdPbRsoIkIJd+UHa8u9ZqNfCZ32jAB2ElK0r
JUoVSLevhMDTuttU4aLr+SY4SqG8odcq+OvRtERlph+y9XEp4z1JrksT1CViyB/Z
7hztXHANaDNaeA==
-----END CERTIFICATE-----
Private certificate server.key
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEArsp+p8ZHoBbga9YsfUSrJEp+e4q6D5mVElOtUGBytjSY1I2a
WPADRL8llv53MzhezrMhVSuTyeqtyaJ1Y/NSCAMZ6U50XXU5mH3ghu2SH6VPYnll
iwngnoxInhtUSjxwoBwFxtZGdpM+NhPnGHJBNbGNF+MeQyTuylz4MktMkB/ibTsN
RnNmpH10DMqEDF8tLgeTci1rcY6JZvgvsE5/C4hX9EguwoxaqIm+QlKEUh/7LViM
8nMtB1ebIAJvmIikGRpr5HJr11z5/f02d12TWb59gYTw4GR0SdqkftuBsjMNfW5+
V5WxNXzowC+D189vWgFSd1gzWOmmV2RkgI3g7QIDAQABAoIBAAkitElN57h0+aMp
PTIJlhhTfGuLQ1DwFLEx28EeXrXUke2qE63KUva+NtdpfWQZR3tDiYkgufINE1WS
lCghM4xk/Rm17AcRIBgu8WlGns3gn1bk7sBm8m0sT9n+UQLVnd1VxEeG3i/xtN1c
Cka7fK+zE/jHpMaa9jrFboN9GVyponjCW6yQ4AJrzpNr15ekmAcnQfH6M5WFgoSV
7h/pKiOvqIPfXup3o0cBnQYJUTX/tiEANbOQt2JQ4f3P9uDWi4q8tpY82J+3rMl1
opx7pobM80EUKshNoe6n+693b861FbImn2EsLAcLF3LhtY4h8tvV/E4sfAaKCZFa
R2D04VECgYEA4NMZ0kN5ajbKg2p3IhxNukp/2N2hCHxC8AQrDW9qmtWpaoN5a4of
prCrsnb2vMNkaFRZK8blI7y2SFfA/aQDyRigarqEIMy7fbtGO5la9X9M0hMBRkHx
8Dw2Vrba1dhau9M/3n8+ofwqB7DxvVZ3VOIvAbOPkNLVWW8VvTi//+8CgYEAxwdI
qM5riy3v2d868UXAwdSJVzylezGZ670/7U0zQjdUssg1fgabtPdm9mVXc4EchfCK
FtkpxIGEZujLaIcyUTCwHXFsCVSMa+7T+QPOxe23K9QAPSsfJCsxuyNY6l7PhQqe
hChkbCfzbYSKxZ7HI4CglGo9QojQoVs2+1ehEOMCgYBCsv4/HhuAQl8UW9qaORFq
Sj3hpebncI4fTO1E4CAdbXQEkJrOJ706I8HcgWS0HbfFJ/kIfspuLsdZcQdleGpT
F8ZHw6v9Wx/ork2o0tdka+7riA3hvSC85/ArC7aiqLxKauLQ7Kk1P21suLcPN/7R
JQVTGOVnztTS4pztdU+o6wKBgEr/u6mg33W7Ab8gF54Dovdnl7l/6PvbXR0wW36Y
sNAq+YfFWiL7aoFvGSWQWrvz00PFuMOTYeHizHnbD4t8JsHhjvwJWaTKb3/cp5QW
kzySr4ucf9qM/Vcrz7mtQDxRLfH8Zm92qSD4jQqf/4soofIG7nv+7Ma9t6CWNsnP
46nxAoGAT45oUv7pG33NpzJ+yur+Lka3Aa80Pl6SkY6Ot9OTTN6VT0kPKFfSkQ2k
iI2skurIPUtmo0NsSNF+9ixdG012P4Al09SrP4X6v+kUJg6IZHsFvAzikGPoc1X+
RWOP+TNVR1+W/MgEDuTOn4X583SEj3DF2WlsfSUaM/E5VWb4F48=
-----END RSA PRIVATE KEY-----
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os.path
from tornado import httpserver
from tornado import ioloop
from tornado import web
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
class TestHandler(web.RequestHandler):
def get(self):
self.write("Hello, 雪狼 !")
def main():
settings = {
"static_path": os.path.join(os.path.dirname(__file__), "static"),
}
application = web.Application([
(r"/", TestHandler),
], **settings)
server = httpserver.HTTPServer(application, ssl_options={
"certfile": os.path.join(os.path.abspath("."), "server.crt"),
"keyfile": os.path.join(os.path.abspath("."), "server.key"),
})
print(server)
server.listen(8000)
ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
Effect screenshot