如何在Python的sentry sdk中拥有多个全局DSN?
我希望在我正在编写的工具中有多个DSN。该工具是用户将自己的DSN用于跟踪错误的工具。我还想跟踪我自己的DSN中的错误 也有人问这个问题,但给出的答案是拥有一个全局DSN,然后通过另一个客户端手动提交事件如何在Python的sentry sdk中拥有多个全局DSN?,python,sentry,Python,Sentry,我希望在我正在编写的工具中有多个DSN。该工具是用户将自己的DSN用于跟踪错误的工具。我还想跟踪我自己的DSN中的错误 也有人问这个问题,但给出的答案是拥有一个全局DSN,然后通过另一个客户端手动提交事件 相关的和未回答的:查看代码,最方便和最受支持的方法似乎是将Transport子类化,并制作一个非常轻量级的包装器 class MultiTransport(sentry_sdk.transport.Transport): def
相关的和未回答的:查看代码,最方便和最受支持的方法似乎是将Transport子类化,并制作一个非常轻量级的包装器
class MultiTransport(sentry_sdk.transport.Transport):
def __init__(self, options=None):
self.transports = []
options.pop('transport', None)
dsn = options.pop('dsn', [])
for d in dsn:
options['dsn'] = d
self.transports.append(
sentry_sdk.transport.HttpTransport(options)
)
super().__init__(options)
def capture_event(self, event):
for t in self.transports:
t.capture_event(event)
def flush(self, timeout, callback=None):
for t in self.transports:
t.flush(timeout, callback)
def kill(self):
for t in self.transports:
t.kill()
你用
sentry = sentry_sdk.init(
transport=MultiTransport,
dsn=[dsn1, dsn2, dsn3])
我不清楚应该如何处理for循环中的异常。也许应该处理并忽略它们,以便也向下一个DSN发出警报
另外,还不清楚是应该只调用一次flush()
回调,还是应该为每个DSN调用一次
如中所述,请确保为您的用户提供一种退出DSN的方式,并注意可能传递的信息