Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python的sentry sdk中拥有多个全局DSN?_Python_Sentry - Fatal编程技术网

如何在Python的sentry sdk中拥有多个全局DSN?

如何在Python的sentry sdk中拥有多个全局DSN?,python,sentry,Python,Sentry,我希望在我正在编写的工具中有多个DSN。该工具是用户将自己的DSN用于跟踪错误的工具。我还想跟踪我自己的DSN中的错误 也有人问这个问题,但给出的答案是拥有一个全局DSN,然后通过另一个客户端手动提交事件 相关的和未回答的:查看代码,最方便和最受支持的方法似乎是将Transport子类化,并制作一个非常轻量级的包装器 class MultiTransport(sentry_sdk.transport.Transport): def

我希望在我正在编写的工具中有多个DSN。该工具是用户将自己的DSN用于跟踪错误的工具。我还想跟踪我自己的DSN中的错误

也有人问这个问题,但给出的答案是拥有一个全局DSN,然后通过另一个客户端手动提交事件


相关的和未回答的:

查看代码,最方便和最受支持的方法似乎是将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的方式,并注意可能传递的信息