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
|
internal_api
|
||||||
features
|
features
|
||||||
sasl
|
sasl
|
||||||
|
remove_process
|
||||||
handlersmatchers
|
handlersmatchers
|
||||||
guide_xep_0030
|
guide_xep_0030
|
||||||
xmpp_tdg
|
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