इसलिए मैं एक एमक्यूटीटी प्रकाशक पर काम कर रहा हूं और एक पब क्लास बनाना चाहता हूं। मुझे एक समान प्रश्न यहां मिला, लेकिन मुझे नहीं पता कि यह मेरी समस्या का कैसे अनुवाद करता है।
यह मेरा कोड है:
def send_on_sensor(q, topic, delay, pub):
while q.empty is not True:
payload = json.dumps(q.get())
pub.publish(payload)
time.sleep(delay)
class Pub:
def __init__(self, MQTT_BROKER, MQTT_TOPIC):
self.MQTT_BROKER = MQTT_BROKER
self.MQTT_TOPIC = MQTT_TOPIC
self.mqttc = mqtt.Client()
self.mqttc.on_connect = self.on_connect
self.mqttc.publish = self.publish
# Connect automatically on the creation of the object, but disconnect manually
self.connect()
def on_connect(self, client, userdata, flags, rc):
print("Connecting to {}. Connection returned result: {}".format(self.MQTT_BROKER, rc))
self.mqttc.subscribe(self.MQTT_TOPIC)
def publish(self, MQTT_MSG):
self.mqttc.publish(self.MQTT_TOPIC, MQTT_MSG)
def connect(self):
self.mqttc.connect(self.MQTT_BROKER)
def disconnect(self):
self.mqttc.disconnect()
मुझे यह त्रुटि मिलती है:
Exception in thread Thread-4:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/Users//PycharmProjects//V3_multiTops/mt_GenPub.py", line 76, in send_on_sensor
pub.publish(payload)
File "/Users//PycharmProjects//V3_multiTops/mt_GenPub.py", line 129, in publish
self.mqttc.publish(self.MQTT_TOPIC, MQTT_MSG)
TypeError: publish() takes 2 positional arguments but 3 were given
यहां वास्तव में क्या समस्या है और मैं इसे कैसे ठीक करूं?
1 उत्तर
आप प्रकाशित करने के लिए दो तर्क पारित कर रहे हैं ():
self.mqttc.publish(self.MQTT_TOPIC, MQTT_MSG)
लेकिन फ़ंक्शन को केवल एक तर्क लेने के लिए परिभाषित किया गया था (self
से अलग, जो स्वचालित रूप से पारित हो जाता है):
def publish(self, MQTT_MSG):
आप MQTT_TOPIC
क्यों पास कर रहे हैं?
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।