On 2020-01-18 00:34, ron.egg...@ecoation.com wrote:
Hi,
I'm semi new to Python but need to modify a program that calls the
mqtt_client.publish() function from aws iot.
Now, if the publish function fails, it raises an exception. I need to change
the code so that when an exception is raised, instead of giving up, it should
retry.
Here's some semi pseudo code of what I came up with and what I'm particularly
interested in is, if the exception in pub_msg() is raised, will my thread t
keep running?
What else could/should be improved about the below snippet? I'm looking forward
to get some inputs.
Thanks!
>
> import retrying
> import Queue as queue
Is this Python 2? In Python 3 it's called "queue".
> import threading as th
> NUM_THREADS=1
> numth=[]
> def worker():
> while not_terminated():
> item = q.get()
> if item is None:
> continue
> do_stuff(item)
>
> def enQ(self, msg, topic):
> if len(numth<int(NUM_THREADS):
Missing ")".
> t = th.Thread(target=worker)
> t.start()
> numth.append(t)
> q.put([self,msg,topic])
>
> def do_stuff(dat):
> self = dat[0]
> msg = dat[1]
> topic = dat[2]
> pub-msg(slef, msg, topic)
The "-" should be "_" and "slef" should be "self".
>
> def send_msg(self, msg,topic):
> enQ(self,msg,topic)
>
> def pub_msg(self,msg,topic):
> try:
> if topic == "test" and \
> something[self.xyz]:
> return
> except KeyError as err:
> foo("Exception {}".format(err))
"except" block is indented too much.
If there's a key error, it'll call "foo" (whatever that is) and then
continue.
>
> aws_publish(self,msg,topic)
>
> @retry (wait_random_min=1000, wait_random_max=2000)
> def aws_publish(self.msg,topic):
"." instead of ",".
> self.__mqtt_client.publish(
> "/{}/{}".format(topic, self._uuid), msg_json, 1)
>
--
https://mail.python.org/mailman/listinfo/python-list