是否有类似于Python请求的内容' Paho MQTT的会议?

时间:2016-10-31 15:41:43

标签: python paho

我正在阅读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之类的东西?

1 个答案:

答案 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')