How to remove xmpp.process()#
Starting from slixmpp 1.8.0, running
process() on an
XMLStream/ClientXMPP/ComponentXMPP instance is deprecated, and starting from
1.9.0, it will be removed.
This has been the usual way of running an application using SleekXMPP/slixmpp for ages, but it has come at a price: people do not understand how they should run their application without it, or how to integrate their slixmpp code with the rest of their asyncio application.
process() is only a very thin wrapper around asyncio loop
if timeout is None: if forever: self.loop.run_forever() else: self.loop.run_until_complete(self.disconnected) else: tasks: List[Future] = [asyncio.sleep(timeout)] if not forever: tasks.append(self.disconnected) self.loop.run_until_complete(asyncio.wait(tasks))
Hence it can be replaced according to what you want your application to do:
To run forever,
loop.run_forever()will work just fine
To run until disconnected,
loop.run_until_complete(xmpp.disconnected)will be enough (XMLStream.disconnected is an future which result is set when the stream gets disconnected.
To run for a scheduled time (and still abort when disconnected):
tasks = [asyncio.sleep(timeout)] tasks.append(xmpp.disconnected) loop.run_until_complete(asyncio.wait(tasks))
There is no magic at play here and anything is possible if a more flexible execution scheme is expected.