docs: add a page on how to remove process()
This commit is contained in:
parent
b23b805dc5
commit
5c4c867dee
2 changed files with 56 additions and 0 deletions
|
@ -9,6 +9,7 @@ Tutorials, FAQs, and How To Guides
|
|||
internal_api
|
||||
features
|
||||
sasl
|
||||
remove_process
|
||||
handlersmatchers
|
||||
guide_xep_0030
|
||||
xmpp_tdg
|
||||
|
|
55
docs/howto/remove_process.rst
Normal file
55
docs/howto/remove_process.rst
Normal file
|
@ -0,0 +1,55 @@
|
|||
.. _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.
|
Loading…
Reference in a new issue