I've been looking around and have seen a lot of information regarding asyncio. I'm having trouble creating a program that won't terminate as long as the background task is running.
def loop_test(): print("task is running") time.sleep(2) print("task is finished") async def start_pipeline(self): print("Starting TD Stream") # Build data pipeline await self.td_stream_client.build_pipeline() data_response_count = 0 self.streaming = True # Keep going while receiving data while self.streaming: print("Streaming") data = await self.td_stream_client.start_pipeline() # Parse if data inside if 'data' in data: content = data['data'][0]['content'] print("Key: {}".format(content[0]['key'])) pprint.pprint(content, indent=4) print('-' * 80) data_response_count += 1 print("Done with while loop") async def main(): _ = asyncio.create_task(td_stream_client.start_pipeline()) coro = asyncio.to_thread(TDA_Streaming.loop_test) await coro asyncio.run(main()) The idea of the program is to have a background task that streams data from an API to my program. While this is happening, I want to be able to do other things. Maybe have manual input...maybe have a GUI where I can interact with things.
The issue is that my program terminates as soon as the master thread finishes. How do I prevent this from happening? If I have a while loop with an "input" call, this input blocks the program. What is the best way to proceed?