Collective Warmup
项目描述
介绍
collective.warmup已被创建,用于在启动和重启时预热Web应用程序的缓存。
它通过读取包含URL列表的配置文件来工作,然后调用这些URL。
collective.warmup受到Gil Forcada的warmup_plone.py脚本的启发。
为什么不使用简单的bash脚本呢?
虽然基本用例非常简单,但collective.warmup提供了以下额外功能
验证响应体的正确性(例如,包含特定字符串)
可以以爬取模式运行,跟随页面中的链接以预热所有相关页面
可以根据通用定义过滤掉某些URL
安装
collective.warmup可以通过以下两种方式安装
依赖关系
手动安装
要安装它(使用 virtualenv,在 GNU/Debian 机器上)
$ sudo apt-get install build-essential python-dev python-lxml python-virtualenv libxml2-dev libxslt1-dev $ virtualenv warmup && cd warmup && souce bin/activate (warmup) $ pip install collective.warmup
然后使用以下命令启动它:
(warmup) $ bin/warmup <path/file.ini>
使用 buildout 的替代安装方法
要将 collective.warmup 集成到包含 buildout 和 Plone 的配置中,请将以下内容添加到您的配置文件中:
[buildout] ... parts = ... warmup [instance] ... eggs += collective.warmup [instance] environment-vars += WARMUP_BIN ${buildout:directory}/bin/warmup WARMUP_INI ${buildout:directory}/warmup.ini WARMUP_HEALTH_THRESHOLD 50000 [warmup] recipe = zc.recipe.egg:scripts eggs = collective.warmup
执行 buildout 后,您将在 bin 目录中找到 warmup 脚本。
在本例中,每次 Zope 实例启动时都会自动执行该脚本。
配置文件
以下是一个示例 warmup.ini 配置文件
[warmup] enabled = True sleep = 2 base_url = https://127.0.0.1 logfile = /path/to/warmup.log urls = Home page [config] max_attempts = 2 base_path = mysite [Home page] path = ${config:base_path}/ max_attempts = ${config:max_attempts} check_exists = Welcome check_not_exists = p0wned by follow_links = True ignore_middle = @@ ++theme++ # ? ignore_end = .css .js .png .jpg .jpeg .gif .xml RSS .ico
选项
全局 [warmup]
- enableTrue 或 False
如果 False,则脚本在调用时将不执行任何操作。
- sleep整数
脚本在 URL 获取之间等待的秒数。默认为 2。
- base_url有效的 URL(别忘了协议!)
要检查的基本 URL(各个 URL 部分的所有路径相对于此 URL)。
- log_file文件系统路径
日志将被写入的文件。
- urls一个列表(由换行符分隔)
我们想要检查的 URL。每个 URL 都必须在配置文件中有一个自己的部分(见下文),我们在这里引用这些部分(不要在这里放置实际的 URL!)。它还设置了一个检查顺序(按顺序执行)。
URL 部分
- max_attempts整数
检查 URL 的最大尝试次数。默认为 2。
- path要检查的路径
路径将添加到 base_url 参数中,以便获取页面 URL。
- check_exists字符串列表
必须在页面中存在的字符串列表。
- check_not_exists字符串列表
必须在页面中不存在的字符串列表。
- follow_linksTrue 或 False
如果 True,则脚本将跟随页面中的链接,并为每个链接执行相同的检查。
- ignore_middle字符串列表
如果 follow_links 为 True,则包含这些字符串之一的链接将被忽略。
- ignore_end字符串列表
如果 follow_links 为 True,则以这些字符串之一结尾的链接将被忽略。
健康检查
为了防止负载均衡器在适当预热之前过早地将后端标记为健康,此软件包定义了一个名为 @@health.check 的浏览器视图,可以在您的负载均衡器探测机制中使用。以下是一个 Varnish 配置示例:
backend instance_1 { .host = "localhost"; .port = "8081"; .probe = { .url = "/health.check"; .interval = 5s; .timeout = 1s; .window = 5; .threshold = 3; } }
这样,当 ZODB 缓存大小大于 WARMUP_HEALTH_THRESHOLD 时,Varnish 将将 Zope 实例的后端标记为健康。如果您没有定义 WARMUP_HEALTH_THRESHOLD 环境变量,则 Zope 实例的后端将在 Zope 能够处理请求时立即被标记为健康。
鸣谢
变更日志
1.2 (2016-09-08)
检查日志文件中的写入权限,如果无法写入,则回退到临时文件而不是 sys.exit [avoinea]
添加 @@health.check 浏览器视图,以便在负载均衡器健康检查中使用,以防止在适当预热之前过早地将后端标记为健康。[avoinea]
避免僵尸进程。[jone]
添加 zcml:condition 以实现 Plone 3 兼容性 [gborelli]
1.1 (2014-07-18)
Python 2.4 支持 [gborelli]
1.0 (2014-04-06)
首次发布
项目详情
collective.warmup-1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b635cd75d00c5c1d81ae834a570161be35f3754c86bb9f78864bfc9d3cdbfaa5 |
|
MD5 | 74f10698bff26564d8a562f0d3514393 |
|
BLAKE2b-256 | 867e3b2fec3c51ff3c90a6f96546362fe71e016eb0e43216ce89244b1caeaa78 |