跳转到主要内容

Collective Warmup

项目描述

介绍

collective.warmup已被创建,用于在启动和重启时预热Web应用程序的缓存。

它通过读取包含URL列表的配置文件来工作,然后调用这些URL。

collective.warmup受到Gil Forcada的warmup_plone.py脚本的启发。

为什么不使用简单的bash脚本呢?

虽然基本用例非常简单,但collective.warmup提供了以下额外功能

  • 验证响应体的正确性(例如,包含特定字符串)

  • 可以以爬取模式运行,跟随页面中的链接以预热所有相关页面

  • 可以根据通用定义过滤掉某些URL

安装

collective.warmup可以通过以下两种方式安装

  • 作为常规Python包通过pip安装

  • buildout内部,可选与Plone集成

依赖关系

手动安装

要安装它(使用 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 集成到包含 buildoutPlone 的配置中,请将以下内容添加到您的配置文件中:

[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]

enableTrueFalse

如果 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_linksTrueFalse

如果 True,则脚本将跟随页面中的链接,并为每个链接执行相同的检查。

ignore_middle字符串列表

如果 follow_linksTrue,则包含这些字符串之一的链接将被忽略。

ignore_end字符串列表

如果 follow_linksTrue,则以这些字符串之一结尾的链接将被忽略。

健康检查

为了防止负载均衡器在适当预热之前过早地将后端标记为健康,此软件包定义了一个名为 @@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 能够处理请求时立即被标记为健康。

鸣谢

Abstract Website

变更日志

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 (23.5 kB 查看哈希值)

上传时间 源代码

支持者