mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-11-04 01:47:27 +03:00 
			
		
		
		
	Add Heroku instructions to sessions documentation (#586)
This commit is contained in:
		
							parent
							
								
									06bc761a5b
								
							
						
					
					
						commit
						f200369a93
					
				
							
								
								
									
										
											BIN
										
									
								
								readthedocs/extra/advanced-usage/.DS_Store
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								readthedocs/extra/advanced-usage/.DS_Store
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -44,3 +44,52 @@ methods. For example, you could save it on a database:
 | 
			
		|||
 | 
			
		||||
You should read the ````session.py```` source file to know what "relevant
 | 
			
		||||
data" you need to keep track of.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Sessions and Heroku
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
You probably have a newer version of SQLite installed (>= 3.8.2). Heroku uses
 | 
			
		||||
SQLite 3.7.9 which does not support ``WITHOUT ROWID``. So, if you generated
 | 
			
		||||
your session file on a system with SQLite >= 3.8.2 your session file will not
 | 
			
		||||
work on Heroku's platform and will throw a corrupted schema error.
 | 
			
		||||
 | 
			
		||||
There are multiple ways to solve this, the easiest of which is generating a
 | 
			
		||||
session file on your Heroku dyno itself. The most complicated is creating
 | 
			
		||||
a custom buildpack to install SQLite >= 3.8.2.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Generating Session File on a Heroku Dyno
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
.. warning::
 | 
			
		||||
    Do not restart your application Dyno at any point prior to retrieving your
 | 
			
		||||
    session file. Constantly creating new session files from Telegram's API
 | 
			
		||||
    will result in a 24 hour rate limit ban.
 | 
			
		||||
 | 
			
		||||
Due to Heroku's ephemeral filesystem all dynamically generated
 | 
			
		||||
files not part of your applications buildpack or codebase are destroyed upon
 | 
			
		||||
each restart.
 | 
			
		||||
 | 
			
		||||
Using this scaffolded code we can start the authentication process:
 | 
			
		||||
 | 
			
		||||
    .. code-block:: python
 | 
			
		||||
 | 
			
		||||
        client = TelegramClient('login.session', api_id, api_hash).start()
 | 
			
		||||
 | 
			
		||||
At this point your Dyno will crash because you cannot access stdin. Open your
 | 
			
		||||
Dyno's control panel on the Heroku website and "run console" from the "More"
 | 
			
		||||
dropdown at the top right. Enter ``bash`` and wait for it to load.
 | 
			
		||||
 | 
			
		||||
You will automatically be placed into your applications working directory.
 | 
			
		||||
So run your application ``python app.py`` and now you can complete the input
 | 
			
		||||
requests such as "what is your phone number" etc.
 | 
			
		||||
 | 
			
		||||
Once you're successfully authenticated exit your application script with
 | 
			
		||||
CTRL + C and ``ls`` to confirm ``login.session`` exists in your current
 | 
			
		||||
directory. Now you can create a git repo on your account and commit
 | 
			
		||||
``login.session`` to that repo.
 | 
			
		||||
 | 
			
		||||
You cannot ``ssh`` into your Dyno instance because it has crashed, so unless
 | 
			
		||||
you programatically upload this file to a server host this is the only way to
 | 
			
		||||
get it off of your Dyno.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user