Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
AsyncSSH and timeout
#1
Good day,
I'm trying to run multiple SSH clients using AsyncSSH lib. This is an example from manual, which works fine:
      
 
import asyncio, asyncssh

async def run_client(host, command):
   async with asyncssh.connect(host) as conn:
       return await conn.run(command)

async def run_multiple_clients():
   # Put your lists of hosts here
   hosts = 5 * ['localhost']

   tasks = (run_client(host, 'ls abc') for host in hosts)
   results = await asyncio.gather(*tasks, return_exceptions=True)

   for i, result in enumerate(results, 1):
       if isinstance(result, Exception):
           print('Task %d failed: %s' % (i, str(result)))
       elif result.exit_status != 0:
           print('Task %d exited with status %s:' % (i, result.exit_status))
           print(result.stderr, end='')
       else:
           print('Task %d succeeded:' % i)
           print(result.stdout, end='')

       print(75*'-')

asyncio.get_event_loop().run_until_complete(run_multiple_clients())
The problem is, it is not possible to directly set connect timeout in run_client() function. However, the manual says:

Quote: asyncio calls can be wrapped in a call to asyncio.wait_for() or asyncio.wait() which takes a timeout and provides equivalent functionality.

So I tried to modify run_client() like this:

       
async def run_client(host, command):
    try:
        with (yield from asyncio.wait_for(asyncssh.connect('localhost'), timeout = 3)) as conn:
            return await conn.run(command)
    except TimeoutError:
        # handle connection timeout
But it spits out a syntax error. I also tried countless variations of it, but still no luck. Could someone more knowledgeable help me to set the damn timeout?
Reply
#2
I'm not in a good position to test this myself at the moment, but what if you drop the yield from part?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  FTp timeout except korenron 2 3,664 Feb-01-2022, 06:51 AM
Last Post: korenron
  timeout value in subprocess jonesin1974 2 5,123 Dec-01-2017, 02:18 PM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020