gpt4 book ai didi

python - 在 python 中实现服务提供者接口(interface)模式

转载 作者:行者123 更新时间:2023-12-05 06:00:45 25 4
gpt4 key购买 nike

我来自 Java 背景,我想知道如何在 python 中实现类似于 SPI 模式的东西:How to implement the API/SPI Pattern in Java?

基本上,我们正在构建一个平台,我们希望将 SDK/API 包分发给将在平台上构建数据管道的“平台用户”。

我们只想共享接口(interface),实际实现由平台在运行时解决。

例如,以下 SDK 类/接口(interface)共享给平台用户,在运行时,当他们的代码调用 IEventLog.send_event() 方法时,平台将使用 Kafka Producer 将事件发送到 kafka .

class IEventLog(object):
def __init__(self):
pass
def send_event(self,qn,corrId):
raise Exception("Error Runtime feature")

最佳答案

如果我正确理解您的需求,第一种方法可以像这样使用动态导入:

# set target module somehow, for example via environment variable 
# or some kind of settings file.

import os
import imporlib

class EventLog(object):
def __init__(self):
impl_module = os.environ.get("IMPL_MODULE")
self.impl = importlib.import_module(imp_module)

def send_event(self,qn,corr_id):
self.impl.send_event(qn, corr_id)

第二种是使用策略模式。

class EventLog(object):
def __init__(self):
self.impl = None

def set_impl(self, impl):
self.impl = impl

def send_event(self,qn,corr_id):
self.impl.send_event(qn, corr_id)

第三种是使用某种依赖注入(inject)。

关于python - 在 python 中实现服务提供者接口(interface)模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67467137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com