55 lines
1.6 KiB
ReStructuredText
55 lines
1.6 KiB
ReStructuredText
.. _remove-process:
|
|
|
|
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.
|
|
|
|
Why
|
|
---
|
|
|
|
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.
|
|
|
|
In essence, ``process()`` is only a very thin wrapper around asyncio loop
|
|
functions:
|
|
|
|
.. code-block:: python
|
|
|
|
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))
|
|
|
|
How
|
|
---
|
|
|
|
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):
|
|
|
|
.. code-block:: python
|
|
|
|
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.
|