Это действительно зависит от вашего WSGI-сервера, на котором вы размещаете свою платформу.Лучшее решение с бутылкой - провести ее через гевент.
botapp = bottle.app()
for Route in (mainappRoute,): #handle multiple files containing routes
botapp.merge(Route)
botapp = SessionMiddleware(botapp, beakerconfig) #in case you are using beaker sessions
botapp = WhiteNoise(botapp) #in case you want whitenoise to handle static files
botapp.add_files(staticfolder, prefix='static/') #add static route to whitenoise
server = WSGIServer(("0.0.0.0", int(80)), botapp) #gevent async web server
def shutdown():
print('Shutting down ...')
server.stop(timeout=60)
exit(signal.SIGTERM)
gevent.signal(signal.SIGTERM, shutdown)
gevent.signal(signal.SIGINT, shutdown) #CTRL C
server.serve_forever() #spawn the server
Вы можете очистить конфиги с белым шумом и бутылками, если они не нужны, я оставил их там в качестве примера и предлагаю использовать их, если они обращены наружу.
Это чисто асинхронный на каждом соединении.