Python Webhook和事件框架。
项目描述
- 版本:
1.5.2
- 网络:
- 下载:
- 源代码:
- 关键词:
事件驱动,webhooks,回调,http,django
关于
Thorn是一个针对Python的webhook框架,侧重于易用性和灵活性,无论是在开始使用还是在维护生产系统时。
目标是让webhooks在网络上蓬勃发展,通过为Python项目提供易于实现的解决方案,并保持Python社区发展出的模式仓库。
简单
使用单个装饰器将webhook功能添加到数据库模型中,包括对模型特定更改的过滤。
灵活
所有Thorn组件都是可插拔的、可重用的和可扩展的。
可扩展
通过利用Celery进行异步处理,Thorn可以每秒执行数百万个HTTP请求。
什么是webhooks?
webhook是一个花哨的HTTP回调名称。
用户和其他服务可以通过注册一个URL来订阅系统中发生的任何事件。
标准的示例是GitHub,您可以为每次向您的仓库提交新更改、创建新的bugtracker问题、有人发布评论等情况注册URL。
另一个例子是内部系统之间的通信,传统上由复杂的消息消费者守护程序主导,使用webhooks是一种优雅且符合REST风格的方式来实现事件驱动系统,只需要一个Web服务器(最好是单独的服务来调度HTTP回调请求)。
Webhooks还可以组合使用,因此您可以组合多个HTTP回调来形成复杂的流程,这些流程在多个系统的事件发生时执行。
使用中
Webhooks在实际应用中的显著例子有
网站 |
文档 |
Github |
|
Stripe |
|
PayPal |
示例
以下示例向一个假想的博客引擎的Article模型添加了四个webhook事件
from thorn import ModelEvent, webhook_model @webhook_model # <--- activate webhooks for this model class Article(models.Model): uuid = models.UUIDField() title = models.CharField(max_length=100) body = models.TextField() class webhooks: on_create = ModelEvent('article.created') on_change = ModelEvent('article.changed'), on_delete = ModelEvent('article.removed'), on_publish = ModelEvent( 'article.published', state__eq='PUBLISHED', ).dispatches_on_change(), @models.permalink def get_absolute_url(self): return 'article:detail', None, {'uuid': self.uuid}
现在,用户可以单独订阅这四个事件,或者通过订阅article.*来订阅所有事件,每当文章创建、更改、删除或发布时,都会收到通知
$ curl -X POST \ > -H "Authorization: Bearer <secret login token>" \ > -H "Content-Type: application/json" \ > -d '{"event": "article.*", "url": "https://e.com/h/article?u=1"}' \ > http://example.com/hooks/
API的表达能力强,因此您可能需要学习更多关于参数的知识,才能完全理解它。幸运的是,它都在快速入门教程后面的事件指南中描述了。
我需要什么?
Thorn目前只支持Django,并为Django REST Framework提供了订阅事件的API。
扩展Thorn很简单,因此您也可以为您的首选框架提供支持。
对于调度Web请求,我们推荐使用Celery,但您可以直接在本地调度请求以立即开始。
使用Celery调度请求需要类似RabbitMQ或Redis的消息传输。
如果您有关于高效有效负载交付的想法,或者只是想重用已在生产中部署的技术,您也可以编写自定义调度器。
快速开始
立即转到django-guide指南,开始在使用Django项目中使用Thorn。
如果您使用的是不同的Web框架,请考虑通过实现新的环境类型来为项目做出贡献。
替代方案
Thorn受到多个Python项目的启发
安装
安装稳定版本
您可以通过Python包索引(PyPI)或从源代码安装thorn。
要使用pip安装
$ pip install -U thorn
从源代码下载和安装
从http://pypi.python.org/pypi/thorn/下载最新的thorn版本
您可以通过以下命令安装它
$ tar xvfz thorn-0.0.0.tar.gz $ cd thorn-0.0.0 $ python setup.py build # python setup.py install
如果当前没有使用virtualenv,则必须以特权用户身份执行最后一个命令。
使用开发版本
使用pip
您可以使用以下pip命令安装thorn的最新快照
$ pip install https://github.com/robinhood/thorn/zipball/master#egg=thorn
获取帮助
邮件列表
有关Thorn的使用、开发和未来讨论,请加入thorn-users邮件列表。
IRC
在IRC上与我们聊天。#thorn频道位于Freenode网络。
错误追踪器
如果您有任何建议、错误报告或不满,请将它们报告给我们的问题跟踪器:https://github.com/robinhood/thorn/issues/
贡献
Thorn的开发在GitHub上进行:https://github.com/robinhood/thorn
强烈鼓励您参与thorn的开发。如果您不喜欢GitHub(出于某种原因),您也可以发送常规补丁。
请务必阅读文档中的为Thorn做出贡献部分。
许可协议
本软件根据New BSD License授权。有关完整的授权文本,请参阅顶层分发目录中的LICENSE文件。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
thorn-1.5.2.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 917d1ec990a3b79fa786955ec5a59ecc57a9f94d09d69061707912826d5430e7 |
|
MD5 | 1f41c8ddd2d5d1fda9655b45d42a35bb |
|
BLAKE2b-256 | 69d8724be6abd945a0a201d0d129d61c88082c83f90e2bb78c78531a47638f00 |
thorn-1.5.2-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8b0270517d721d92815db4aa8f108db1a7d3400e1e8589a76135e439cabaec3e |
|
MD5 | 815238344178f08062f3932c94591ab8 |
|
BLAKE2b-256 | f5f63d0be8de5a5eaf9daad61e4d2b5c53e28fd4122102931a9abc5703f83d65 |