我一直在使用 Python 开发一个应用程序,以订阅 Salesforce 中生成的平台事件。我知道平台事件的基本工作,它使用 Bayeux 协议、长轮询,并且需要一个 cometD 客户端来订阅该事件,但我无法将其转换为代码。
我找到了一个Bayeux 协议库,通过它我可以使用 Salesforce 对我的客户进行身份验证,但是,我不确定我将如何接收这些事件。
- 首先,我的应用程序不在任何网络上,它在我的本地机器上运行,我不确定它将如何访问发布平台事件的“总线”。
- 其次,有一个函数可以订阅该库中的事件,但是一旦我的应用程序执行它拥有的所有代码行,它就会终止,它不会等待 Salesforce 上发生的事件,这将生成平台事件,所以我的应用程序可以读取它。
如果有人用 Python 实现了它,请分享一些我可以参考的代码/库来实现它或帮助我了解如何使用这个库来监听平台事件,我需要将我的应用程序放在 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)
File_Upload__e - 这是我创建的平台事件。