mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-11-04 01:47:27 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. _update-modes:
 | 
						|
 | 
						|
============
 | 
						|
Update Modes
 | 
						|
============
 | 
						|
 | 
						|
With ``asyncio``, the library has several tasks running in the background.
 | 
						|
One task is used for sending requests, another task is used to receive them,
 | 
						|
and a third one is used to handle updates.
 | 
						|
 | 
						|
To handle updates, you must keep your script running. You can do this in
 | 
						|
several ways. For instance, if you are *not* running ``asyncio``'s event
 | 
						|
loop, you should use `client.run_until_disconnected
 | 
						|
<telethon.client.updates.UpdateMethods.run_until_disconnected>`:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
    import asyncio
 | 
						|
    from telethon import TelegramClient
 | 
						|
 | 
						|
    client = TelegramClient(...)
 | 
						|
    ...
 | 
						|
    client.run_until_disconnected()
 | 
						|
 | 
						|
 | 
						|
Behind the scenes, this method is ``await``'ing on the `client.disconnected
 | 
						|
<telethon.client.telegrambaseclient.TelegramBaseClient.disconnected>` property,
 | 
						|
so the code above and the following are equivalent:
 | 
						|
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
    import asyncio
 | 
						|
    from telethon import TelegramClient
 | 
						|
 | 
						|
    client = TelegramClient(...)
 | 
						|
 | 
						|
    async def main():
 | 
						|
        await client.disconnected
 | 
						|
 | 
						|
    loop = asyncio.get_event_loop()
 | 
						|
    loop.run_until_complete(main())
 | 
						|
 | 
						|
 | 
						|
You could also run `client.disconnected
 | 
						|
<telethon.client.telegrambaseclient.TelegramBaseClient.disconnected>`
 | 
						|
until it completed.
 | 
						|
 | 
						|
But if you don't want to ``await``, then you should know what you want
 | 
						|
to be doing instead! What matters is that you shouldn't let your script
 | 
						|
die. If you don't care about updates, you don't need any of this.
 | 
						|
 | 
						|
Notice that unlike `client.disconnected
 | 
						|
<telethon.client.telegrambaseclient.TelegramBaseClient.disconnected>`,
 | 
						|
`client.run_until_disconnected
 | 
						|
<telethon.client.updates.UpdateMethods.run_until_disconnected>` will
 | 
						|
handle ``KeyboardInterrupt`` with you. This method is special and can
 | 
						|
also be ran while the loop is running, so you can do this:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
    async def main():
 | 
						|
        await client.run_until_disconnected()
 | 
						|
 | 
						|
    loop.run_until_complete(main())
 |