随时了解情况
dj-whisperer的Python项目详细描述
琼戈语者
当发生特定事件时,Whisper会通过URL通知订阅的用户。在
安装
使用pip安装:
pip install dj-whisperer
必须将whisperer
包添加到INSTALLED_APPS
,并且必须运行migrate
命令。在
示例方案
让我们举一个使用Package
模型的例子。当发生与包相关的事件时,将通知订阅的用户。为此,首先必须确定订阅哪些事件。为了了解何时创建包:
fromdjango.db.models.signalsimportpost_savefromwhisperer.eventsimportWhispererEvent,registryfromwhisperer.tasksimportdeliver_eventclassPackageCreateEvent(WhispererEvent):serializer_class=PackageSerializerevent_type='package-created'registry.register(PackageCreateEvent)defsignal_receiver(instance,created=False,**kwargs):ifcreated:deliver_event(instance,'package-created')post_save.connect(signal_receiver,Package)
当数据库事务成功时,简而言之,当transaction.on_commit()
时,deliver_event
必须被触发。
订阅的用户现在可以被告知,如果他们创建了Webhook
,则会创建一个包。在
importrequestsrequests.post(url='https://your-app.com/whisperer/hooks/',headers={'Authorization':'Token <secret-login-token>',},json={'event_type':'package-created','secret_key':'secret','target_url':'https://example.com/',})
创建包时,uuid
,type
&;data
通过PackageSerializer
将被发布到https://example.com/。在
importrequestsrequests.post(url='https://example.com/',headers={'Content-Type':'application/json','X-Whisperer-Event':'package-created',},json={'event':{'type':'package-created','uuid':'da81e85139824c6187dd1e58a7d3f971',},'data':{'id':61,'transfer_id':49,'order_number':'248398923123','.....':'......',}})
要取消订阅:
importrequestsrequests.delete(url='https://your-app.com/whisperer/hooks/<webhook-id>/',headers={'Authorization':'Token <secret-login-token>',})
- 项目
标签: