跳转到主要内容

Slack的Celery扩展。

项目描述

travis rtd codecov pypi pyversions

Celery-slack是一个Celery扩展,它将消息发布到Slack频道,涉及Celery应用程序、其beat计划以及其工作任务的执行。这些消息可以链接到Flower任务页面。

https://i.imgur.com/fDkivP8.png

先决条件

要使用此包,您需要一个属于您Slack工作空间的Slack应用程序。您可以从此页面创建应用程序。此应用程序应在您的Slack频道中注册一个入站webhook。有关更多信息,请参阅Slack入站webhook

安装

Celery-slack是可在PyPI上找到的python包。您可以使用pip安装它

pip install celery-slack

基本用法

celery-slack最基本的使用需要Celery实例对象和一个对应于Slack频道的Slack webhook。一个简单的例子可能看起来像这样

from celery import Celery
from celery_slack import Slackify


SLACK_WEBHOOK = 'https://hooks.slack.com/services/XXX/YYY/ZZZ'

app = Celery('project')
app.config_from_object('project.config')

slack_app = Slackify(app, SLACK_WEBHOOK)


if __name__ == '__main__':
    app.start()

高级用法

Celery-slack 提供了多种配置选项来自定义 Slack 消息的外观和输出。以下是扩展程序的默认选项:

DEFAULT_OPTIONS = {
    "slack_beat_init_color": "#FFCC2B",
    "slack_broker_connect_color": "#36A64F",
    "slack_broker_disconnect_color": "#D00001",
    "slack_celery_startup_color": "#FFCC2B",
    "slack_celery_shutdown_color": "#660033",
    "slack_task_prerun_color": "#D3D3D3",
    "slack_task_success_color": "#36A64F",
    "slack_task_failure_color": "#D00001",
    "slack_request_timeout": 1,
    "flower_base_url": None,
    "show_celery_hostname": False,
    "show_task_id": True,
    "show_task_execution_time": True,
    "show_task_args": True,
    "show_task_kwargs": True,
    "show_task_exception_info": True,
    "show_task_return_value": True,
    "show_task_prerun": False,
    "show_startup": True,
    "show_shutdown": True,
    "show_beat": True,
    "show_broker": False,
    "use_fixed_width": True,
    "include_tasks": None,
    "exclude_tasks": None,
    "failures_only": False,
    "webhook": None,
    "beat_schedule": None,
    "beat_show_full_task_path": False,
}

可以将这些选项的任何子集以关键字参数的形式传递给构造函数。例如:

options = {
    # Some subset of options
}
app = Celery('project')
slack_app = Slackify(app, SLACK_WEBHOOK, **options)

大多数选项都是自我解释的,但这里有一些额外的细节。

  • slack_*_color:与 Slack 消息附件相关联的左侧垂直条颜色。

  • slack_request_timeout:Slack 消息请求超时时间(秒)。

  • flower_base_url:例如,https://flower.example.com,如果提供,Slack 消息标题将链接到 Flower 中的任务页面。Flower

  • show_task_id:显示任务的 uuid。

  • show_task_execution_time:显示完成任务的时间(分钟/秒)。

  • show_celery_hostname:在 celery/beat 消息中显示机器主机名。

  • show_task_args:显示任务的参数。

  • show_task_kwargs:显示任务的键值参数。

  • show_task_exception_info:显示失败任务的回溯信息。

  • show_task_return_value:显示成功任务的返回值。

  • show_task_prerun:在任务执行开始时发布消息。

  • show_startup:当 celery 开始时发布消息。

  • show_shutdown:当 celery 停止时发布消息。

  • show_beat:当 beat 开始时发布消息。

  • show_broker:当 celery/beat 从或重新连接到代理时发布消息。

  • use_fixed_width:使用 Slack 固定宽度格式化参数、kwargs、retval 和异常信息。

  • include_tasks:要包含的任务路径列表。如果使用,仅针对这些任务发布任务消息。使用正则表达式模式匹配。例如,对于特定任务 module.submodule.taskname 或该子模块中的所有任务 module.submodule。不能与 exclude_tasks 一起使用。

  • exclude_tasks:要排除的任务路径列表。如果使用,仅针对这些任务抑制任务消息。其他所有任务将生成 Slack 消息。不能与 include_tasks 一起使用。使用正则表达式模式匹配。

  • failures_only:仅针对任务失败发布消息。

  • webhook:唯一的必需参数。对应 Slack 通道的 Slack webhook。

  • beat_schedule:celery beat 调度。如果提供,beat_init 消息将显示该调度。

  • beat_show_full_task_path:显示完整的模块-任务路径。如果为 False(默认值)则仅显示 submodule.taskname

警告

请注意,Slack 为入站 webhook 请求设置了 速率限制,大约为每秒 1 请求。此扩展程序尽量遵守这些速率限制。您应确保您的 celery-slack 实现通过调整任务计划或使用 include_tasksexclude_tasks 选项限制生成 Slack 消息的任务集来不违反这些限制。

如果 webhook 响应包含响应代码 429,celery-slack 将抑制由 Retry-After 响应头给定的时间段内的所有消息。返回后,celery-slack 将向 Slack 发布一条警告消息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

celery-slack-webhooks-0.4.6.tar.gz (13.7 kB 查看哈希值)

上传时间 源代码

构建分发

celery_slack_webhooks-0.4.6-py2.py3-none-any.whl (12.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持