我正在阅读Paho MQTT Publish
模块的documentation,并考虑我的应用程序,其中我可能需要发布许多single
个消息,每个用类似的关键字参数。这些调用类似于以下内容:
paho.mqtt.publish.single('dummy_topic', payload=dummy_payload, qos=0, retain=False,
auth={'username': "dummy_username", 'password': "dummy_password"},
hostname=config['mqtt_host'], port=int(config['mqtt_port']), tls=dummy_tls)
为了让我的代码保持干净,我试图想办法在不同的single
命令中保留关键字参数。
对于HTTP请求,Python的请求模块具有Sessions object,允许用户执行此操作。是否有类似Paho MQTT的东西,或者我应该使用functools模块中的partial
之类的东西?
答案 0 :(得分:1)
我认为你已经确定了解决方案。 functools.partial
函数应该给你想要的东西。例如,以下代码:
from functools import partial
def myfunc(arg, kw1='foo', kw2='bar'):
print 'arg:', arg
print 'kw1:', kw1
print 'kw2:', kw2
newfunc = partial(myfunc, kw1='hello', kw2='world')
newfunc('somearg')
生成此输出:
arg: somearg
kw1: hello
kw2: world
将它应用于您的示例,您可以执行以下操作:
publish_single = partial(payload=dummy_payload, qos=0, retain=False,
auth={'username': "dummy_username", 'password': "dummy_password"},
hostname=config['mqtt_host'], port=int(config['mqtt_port']), tls=dummy_tls)
并称之为:
publish_single('some_topic')
publish_single('another_topic')