使用tornado创建本地https服务,不用openssl方案

1.安装pyopenssl

pip install pyopenssl

 2.生成自签名 SSL/TLS 证书,找个文件,写入以下内容,运行一下,会生成cert.pem的文件

from OpenSSL import crypto

# 生成私钥文件
key = crypto.PKey()
key.generate_key(crypto.TYPE_RSA, 2048)

# 生成证书请求文件
req = crypto.X509Req()
subj = req.get_subject()
subj.countryName = "US"
subj.stateOrProvinceName = "CA"
subj.localityName = "San Francisco"
subj.organizationName = "My Company"
subj.commonName = "www.example.com"
req.set_pubkey(key)
req.sign(key, "sha256")

# 生成自签名证书文件
cert = crypto.X509()
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(365*24*60*60)
cert.set_issuer(req.get_subject())
cert.set_subject(req.get_subject())
cert.set_pubkey(req.get_pubkey())
cert.sign(key, "sha256")

with open("cert.pem", "w") as f:
    f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode("utf-8"))
    f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key).decode("utf-8"))

3.在tornado上使用

import ssl
from tornado import httpserver, ioloop, web


class MainHandler(web.RequestHandler):
    def get(self):
        self.write("Hello, world")

if __name__ == "__main__":
    app = web.Application([
        (r"/", MainHandler),
    ])

    # 启用 SSL/TLS
    ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    ssl_ctx.load_cert_chain("cert.pem")
    http_server = httpserver.HTTPServer(app, ssl_options=ssl_ctx)

    http_server.listen(8888)
    ioloop.IOLoop.current().start()

4.然后就可以启动https://localhost:8888啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tornado使用pymssql创建SQL Server连接池可以通过以下步骤实现: 1. 首先,确保已经安装了pymssql库。可以使用pip命令进行安装:`pip install pymssql` 2. 导入必要的模块: ```python import pymssql from tornado.ioloop import IOLoop from tornado.gen import coroutine from tornado.concurrent import Future ``` 3. 创建一个连接池类,用于管理数据库连接: ```python class ConnectionPool: def __init__(self, host, user, password, database, max_connections=10): self.host = host self.user = user self.password = password self.database = database self.max_connections = max_connections self.connections = [] def get_connection(self): if len(self.connections) < self.max_connections: conn = pymssql.connect( host=self.host, user=self.user, password=self.password, database=self.database ) self.connections.append(conn) return conn else: raise Exception("Connection pool is full") def release_connection(self, conn): if conn in self.connections: self.connections.remove(conn) conn.close() ``` 4. 在Tornado的请求处理器中使用连接池: ```python class MyHandler(RequestHandler): def initialize(self, connection_pool): self.connection_pool = connection_pool @coroutine def get(self): conn = self.connection_pool.get_connection() cursor = conn.cursor() cursor.execute("SELECT * FROM table_name") result = cursor.fetchall() cursor.close() self.connection_pool.release_connection(conn) # 处理查询结果 # ... ``` 5. 创建连接池实例并启动Tornado应用: ```python if __name__ == "__main__": connection_pool = ConnectionPool(host="localhost", user="username", password="password", database="dbname") app = Application([ (r"/", MyHandler, dict(connection_pool=connection_pool)), ]) app.listen(8888) IOLoop.current().start() ``` 这样,你就可以在Tornado应用中使用pymssql创建SQL Server连接池了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值