#!/usr/bin/env python3importasabimportasyncioclassStatesDemonstrationApplication(asab.Application):def__init__(self,args=None):super().__init__(args)asyncio.ensure_future(self.async_init_task())# asyncio.create_task(self.async_init_task())print("*****\n1. Synchronous init takes place.")print(" Async tasks are being added to the loop, but are never awaited")asyncdefinitialize(self):self.PubSub.subscribe("Application.tick!",self.when_done)asyncio.ensure_future(self.async_initialize_task())print("*****\n3-5. Asynchronous initializatin takes place.")print(" app.initialize is run concurrently")print(" \"Application.init!\" is published")awaitasyncio.sleep(1)print("*****\n6-8. app.initialize awaited")asyncdefasync_init_task(self):print("*****\n3-5. Scheduled async tasks are run concurrently")awaitasyncio.sleep(2)print("*****\n6-8. All scheduled async tasks awaited")asyncdefasync_initialize_task(self):print("*****\n3-5. Even the ones scheuled in futures themselves.")awaitasyncio.sleep(3)print("*****\n6-8. Even the ones scheuled in futures themselves.")asyncdefmain(self):asyncio.ensure_future(self.async_main_task())print("*****\n7. Run time starts. app.main() is called")print(" then async tasks are being handled, until the application is stopped.")print(" \"Application.init!\" is published, application also starts ticking")asyncdefasync_main_task(self):print("*****\n8. Scheduled async tasks run concurrenlty")awaitasyncio.sleep(10)asyncdefwhen_done(self,event_type):print("*****\n9. app.stop() is called by user code, or application is interupted in terminal")print(" Asab waits 3 seconds to let all scheduled async tasks finish and then exits.")print(" If some tasks are still pending throws warning.")self.stop()asyncdeffinalize(self):print("*****\n10. app.finilize is called, all modules and services are finalized. ")if__name__=='__main__':app=StatesDemonstrationApplication()print("*****\n2. Now application waits for run method to be called")app.run()