| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 生产环境下使用 CyberDB 作为 Flask 的内存数据库 -> 正文阅读 |
|
[Python知识库]生产环境下使用 CyberDB 作为 Flask 的内存数据库 |
前面我们讲述了 CyberDB 的快速上手,现在我们需要把它带到能发挥其作用的地方,在生产环境中将 CyberDB 作为 Flask 的内存数据库,使用 Gunicorn 运行,并实现多进程间的通信。 这篇文章通过一个尽可能精简的 Flask 实例讲解,不会涉及复杂的 Web 知识。核心思路为 CyberDB + Gunicorn + Gevent + Flask (多进程 + 协程),启动一个 CyberDB 服务器,使用 Gunicorn 多进程运行 Flask 实例,每个进程的实例通过 Gevent 运行,进程中使用 CyberDB 客户端连接至内存数据库,由此实现 CyberDB 数据库的高并发访问。 文章使用 PyPy 运行,同样适用 CPython。 运行环境: Python 3.8.12, PyPy 7.3.7 此项目的目录结构
我们通过列举每个文件的内容顺序讲解 CyberDB 的核心操作。 文件 requirements.txt
此项目的依赖。这篇文章不是 Python 基础教程,请查询相关文档创建虚拟环境 venv 目录并安装 requirements.txt 中的依赖。 生成 venv 目录并安装好依赖后,下面所有操作都在激活的虚拟环境中运行。 文件 cyberdb_init.py
在项目根目录执行
此时完成了 CyberDB 数据库表的初始化,在 CyberDB 中创建了一个名为 centre、类型为 CyberDict 的表,初始化 'content' 键的值为 'Hello CyberDB!' ,最后将 CyberDB 数据库保存至硬盘(项目根目录生成了名为 data.cdb 的文件)。 文件 cyberdb_serve.py
在项目根目录执行
以运行 CyberDB 服务端。 此处设置了 encrypt=True ,CyberDB 会将 TCP 通信内容使用 AES-256 算法加密。开启 encrypt=True 后,CyberDB 仅允许白名单中的 ip 通信,默认白名单为 ['127.0.0.1'],白名单设置方法。一般,若只需在本地进程间通信,无需开启 encrypt=True 和设置白名单,只有远程通信时需要此操作。 文件 app.py
该模块会在每次请求执行前( before_request )使用 client.get_proxy() 获取 proxy 对象,每个获取的 proxy 对象可以绑定一个 TCP 连接,此处使用 proxy.connect() 从连接池获取连接。视图函数 hello_world 中,由 proxy 获取的对象 centre,与 proxy 共用同一个连接,proxy 的连接释放后,centre 也会失去连接。在每次请求后( teardown_request )使用 proxy.close() 方法释放 proxy 绑定的连接,归还至连接池。 cyberdb.connect 的 time_out 参数是连接池中每个连接的超时时间,此处每个连接超过 900 秒无操作将被舍弃。若不设置该参数,连接池的每个连接会维持到失效为止。 在项目根目录运行
使用 4 进程、Gevent 启动 Flask 实例。 浏览器访问 127.0.0.1:8000 会得到如下响应
通过此例,你可以把 CyberDB 部署到更复杂的 Web 环境中,充分享受内存的低延迟特性。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:17:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |