Просматривая код, кажется, что наиболее целесообразный и приемлемый способ сделать это - создать подкласс 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()
callback
вызываться только один раз или один раз для каждого DSN.
Как уже упоминалось в ответе github , обязательно предоставьте своим пользователям возможность отказаться от вашего DSN, а также будьте внимательны, какую информацию можно передавать.