如何在Python应用程序中订阅Salesforce平台事件?

2024-06-08 16:44:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用Python开发一个应用程序,用于订阅Salesforce中生成的平台事件。我知道平台事件的基本工作,它使用Bayeux协议,长轮询,需要Comet客户端订阅事件,但我无法将其转换为代码

我找到了一个libraryfor Bayeux协议,通过它我可以向Salesforce验证我的客户机,但是,我不确定如何接收事件

  • 首先,我的应用程序不在任何网络上,它在我的本地机器上运行,我不确定它将如何访问发布平台事件的“总线”
  • 其次,有一个函数可以订阅该库中的事件,但只要我的应用程序执行它拥有的所有代码行,它就会终止,它不会等待Salesforce上发生事件,而Salesforce将生成平台事件,以便我的应用程序可以读取它

如果有人用Python实现了它,请分享一些代码/库,我可以参考这些代码/库来实现它,或者帮助我理解如何使用this library来侦听平台事件,以及我是否需要将我的应用程序放在web服务器上

我正在分享我迄今为止为实现这一点而编写的代码,它没有抛出任何错误

from python_bayeux import BayeuxClient as Client
import requests

def cb(data):
  print('callback')
  print(data)

s = requests.Session()
s.headers.update({'Authorization': 'OAuth <ACCESS_TOKEN>'})

client = Client("https://instance.my.salesforce.com/cometd/48.0/", oauth_session=s, start=False)
client.handshake()
client.connect()
client.subscribe("event/File_Upload__e", callback = cb)

文件上传-这是我创建的平台事件


Tags: 代码importclient应用程序协议datacallback事件