My application needs remote control over SSH. I wish to use this example: https://asyncssh.readthedocs.io/en/latest/#simple-server-with-input
The original app is rather big, using GPIO and 600lines of code, 10 libraries. so I've made a simple example here:
import asyncio, asyncssh, sys, time
# here would be 10 libraries in the original 600line application
is_open = True
return_value = 0;
async def handle_client(process):
    process.stdout.write('Enter numbers one per line, or EOF when done:\n')
    process.stdout.write(is_open)
    total = 0
    try:
        async for line in process.stdin:
            line = line.rstrip('\n')
            if line:
                try:
                    total += int(line)
                except ValueError:
                    process.stderr.write('Invalid number: %s\n' % line)
    except asyncssh.BreakReceived:
        pass
    process.stdout.write('Total = %s\n' % total)
    process.exit(0)
async def start_server():
    await asyncssh.listen('', 8022, server_host_keys=['key'],
                          authorized_client_keys='key.pub',
                          process_factory=handle_client)
loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(start_server())
except (OSError, asyncssh.Error) as exc:
    sys.exit('Error starting server: ' + str(exc))
loop.run_forever()
# here is the "old" program: that would not run now as loop.run_forever() runs.
#while True:
# print(return_value)
# time.sleep(0.1)
The main app is mostly driven by a while True loop with lots of functions and sleep. I've commented that part out in the simple example above.
My question is: How should I implement the SSH part, that uses loop.run_forever()  - and still be able to run my main loop?
Also: the handle_client(process)  - must be able to interact with variables in the main program. (read/write)