Fix timeout
This commit is contained in:
		
							parent
							
								
									b89c7cb32d
								
							
						
					
					
						commit
						baefd09f65
					
				
							
								
								
									
										12
									
								
								redditbot.py
								
								
								
								
							
							
						
						
									
										12
									
								
								redditbot.py
								
								
								
								
							|  | @ -95,13 +95,16 @@ async def main(): | ||||||
|         show_spoilers_warning = chat_data['show_spoilers_warning'] |         show_spoilers_warning = chat_data['show_spoilers_warning'] | ||||||
|         timeout = chat_data.get('timeout') |         timeout = chat_data.get('timeout') | ||||||
| 
 | 
 | ||||||
|         def _get_submission_blocc(): |         give_ups = set() | ||||||
|             while True: |         def _get_submission_blocc(unique_id): | ||||||
|  |             while unique_id not in give_ups: | ||||||
|                 subreddit = reddit.subreddit(random.choice(subreddits)) |                 subreddit = reddit.subreddit(random.choice(subreddits)) | ||||||
|                 random_post = subreddit.random() |                 random_post = subreddit.random() | ||||||
|                 cpid = cpp = None |                 cpid = cpp = None | ||||||
|                 if random_post is None: |                 if random_post is None: | ||||||
|                     for submission in subreddit.hot(): |                     for submission in subreddit.hot(): | ||||||
|  |                         if unique_id in give_ups: | ||||||
|  |                             return | ||||||
|                         cpid = getattr(submission, 'crosspost_parent', None) |                         cpid = getattr(submission, 'crosspost_parent', None) | ||||||
|                         if cpid and getattr(random_post, 'crosspost_parent_list', None): |                         if cpid and getattr(random_post, 'crosspost_parent_list', None): | ||||||
|                             cpid = cpid[3:] |                             cpid = cpid[3:] | ||||||
|  | @ -158,14 +161,17 @@ async def main(): | ||||||
|         @aiocron.crontab(cron_duration) |         @aiocron.crontab(cron_duration) | ||||||
|         async def start_post(): |         async def start_post(): | ||||||
|             while True: |             while True: | ||||||
|  |                 unique_id = time.time() | ||||||
|                 try: |                 try: | ||||||
|                     random_post, cpp = await asyncio.wait_for(client.loop.run_in_executor(None, _get_submission_blocc), timeout) |                     random_post, cpp = await asyncio.wait_for(client.loop.run_in_executor(None, _get_submission_blocc, unique_id), timeout) | ||||||
|                 except asyncio.TimeoutError: |                 except asyncio.TimeoutError: | ||||||
|  |                     give_ups.add(unique_id) | ||||||
|                     logging.error('%s timed out', chat) |                     logging.error('%s timed out', chat) | ||||||
|                     for i in bot_admins: |                     for i in bot_admins: | ||||||
|                         await client.send_message(i, f'{chat} timed out') |                         await client.send_message(i, f'{chat} timed out') | ||||||
|                     break |                     break | ||||||
|                 except Exception: |                 except Exception: | ||||||
|  |                     give_ups.add(unique_id) | ||||||
|                     logging.exception(chat) |                     logging.exception(chat) | ||||||
|                     for i in bot_admins: |                     for i in bot_admins: | ||||||
|                         await client.send_message(i, f'{chat}\n{traceback.format_exc()}') |                         await client.send_message(i, f'{chat}\n{traceback.format_exc()}') | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue