事件来源和处理

django-spark的Python项目详细描述


一个事件的来源和处理。图片:https://travis-ci.org/matthiask/django-spark.png?branch=master
:target:https://travis ci.org/matthiask/django spark

version release


这不应该是真正的文档;它更多的是提醒我自己。

event
源可以创建一个“spark.api.event”实例流,其中每个
事件都必须有一个“group”和一个“key”。其他数据也可以添加到“event”中。键是全局唯一的——具有
相同键的事件仍然只处理一次。组用于确定处理某个事件的处理程序。


如果事件的组与事件的
处理程序的regex匹配,则事件处理程序是每个
``spark.api.event``实例调用一次的函数。




一些使用示例代码
=为挑战创建事件(细节不重要):

代码块::python

from datetime import date
from spark import api


def events\u from\u challenge(challenge):
如果不是challenge.is\u active:
return

yield{
“group”:“challenge\u created”,
“key”:“challenge\u created%s%challenge.pk,
“context”:{“challenge”:challenge},
“context”:{“challenge”:challenge},
}

if(challenge.end_date-date.today()).days<;=2:
产生{
“group”:“challenge_end s_2d”,
“key”:“challenge_ends_2d_%s'%challenge.pk,
“context”:{“challenge”:challenge},
}

如果challenge.end_date<;date.today():
产生{
“group”:“challenge_ended”,
“key”:“challenge_ended_%s'%challenge.pk,
“context”:{“challenge”:challenge},
}



代码块::python

“challenge”:挑战,
},
to=[challenge.user.email],
)发送(fail_silent=true)



注册处理程序:

……代码块::python

def ready(self):
challenge=self.get model('challenge')


source=events_from_challenge,





现在,事件是在进程中直接生成和处理的。
或者,您可能希望处理事件结束
请求-响应周期。这可以通过仅注册
模型事件源(例如在管理命令中),然后通过所有事件源发送所有
模型实例,并直接处理那些
事件来实现,例如:

。代码块::python


api.model_sources.items():
中的源,例如model.objects.all():
源中的源:
api.process_events(api.only_new_events(source(instance))


-`documentation<;https://django spark.readthedocs.io>;`<
-`github<;https://github.com/matthiask/django spark/>;`



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java筛选hibernate中引用的属性   java如何在Bluej中创建以long(integer)为参数的对象   java如何通过JDBC在access中创建新字段   java如何获取格式化日期?   用模板方法模式设计过滤器接口   java编译错误:缺少返回语句   java从JOOQ中的代码生成中排除特定的模式   java小程序生命周期:init()和start()与destroy()和stop()之间的实际区别是什么?   如何在Java中获取类的所有公共静态方法?   匿名onClick方法内的java活动结果   java如何从数千个具有良好性能的寄存器构建excel工作表?   标记Java中多级中断的适当使用   网络化基于Java的Telnet代理服务器,支持TLS。但为什么是java。网SocketException:连接被拒绝   java将magnolia升级到5.6.1,vaadin资源   springcloudnetflixhystrix中的java重写HystrixCommandSpect bean