The framework design of the aios kernel has been basically completed, as well as the key logic code centered on workflow.
This commit is contained in:
+2
-1
@@ -23,8 +23,9 @@ def test_agent():
|
||||
agent = am.create(agent_templete,"Tracy","Wang","Tracy Wang is my english teacher")
|
||||
|
||||
print("Agent Tracy Wang load success!");
|
||||
print(agent.get_introduce());
|
||||
|
||||
#print(agent.get_introduce());
|
||||
|
||||
|
||||
#chat_session = agent.get_default_chat_session("master");
|
||||
#chat_session.chat("给我讲一个英文笑话!");
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import aiofiles
|
||||
STATE_DONE = 0
|
||||
STATE_DOWNLOADING = 1
|
||||
class install_task:
|
||||
def __init__(self) -> None:
|
||||
self.download_task = None
|
||||
self.state = STATE_DOWNLOADING
|
||||
self.recv_bytes = 0
|
||||
self.total_bytes = 0
|
||||
|
||||
class install_task_mgr:
|
||||
def __init__(self) -> None:
|
||||
self.all_tasks = {}
|
||||
|
||||
def create_install_task(self,url:str,target:str):
|
||||
owner = self
|
||||
this_task = self.all_tasks.get(url)
|
||||
if this_task is not None:
|
||||
return this_task
|
||||
|
||||
this_task = install_task()
|
||||
self.all_tasks[url] = this_task
|
||||
async def down_and_write():
|
||||
async with aiofiles.open(target, 'wb') as file:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as response:
|
||||
while True:
|
||||
chunk = await response.content.read(1024*1024*16)
|
||||
this_task.recv_bytes += len(chunk)
|
||||
if not chunk:
|
||||
break
|
||||
await file.write(chunk)
|
||||
print(f"download task {url} done!")
|
||||
this_task.state = STATE_DONE
|
||||
del owner.all_tasks[url]
|
||||
|
||||
this_task.download_task = asyncio.create_task(down_and_write())
|
||||
return this_task
|
||||
|
||||
|
||||
|
||||
async def test_wait_download(mgr):
|
||||
this_task = mgr.create_install_task("https://www.cyfs.com/download/beta/cyberchat/android/latest","test.pkg")
|
||||
await this_task.download_task
|
||||
|
||||
def test_timer_download(mgr):
|
||||
this_task = mgr.create_install_task("https://www.cyfs.com/download/beta/cyberchat/android/latest","test.pkg")
|
||||
# start timer
|
||||
async def check_timer():
|
||||
while this_task.state == STATE_DOWNLOADING:
|
||||
await r = asyncio.sleep(1)
|
||||
print(f"download bytes:{this_task.recv_bytes}")
|
||||
print("download complete!")
|
||||
|
||||
asyncio.create_task(check_timer())
|
||||
|
||||
async def test_main():
|
||||
mgr = install_task_mgr()
|
||||
test_timer_download(mgr)
|
||||
await test_wait_download(mgr)
|
||||
await asyncio.sleep(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(test_main())
|
||||
Reference in New Issue
Block a user