asyncio-socket-server使用schedule实现定时计划任务用python展示。
以下是一个使用asyncio和schedule模块的简单示例,用于在socket服务器上运行定时计划任务:
import asyncio
import schedule
async def task():
print("Task executed at", asyncio.get_running_loop().time())
async def start_schedule():
schedule.every(10).seconds.do(task)
while True:
schedule.run_pending()
await asyncio.sleep(1)
async def handle_client(reader, writer):
print("New connection")
while True:
data = await reader.read(1024)
message = data.decode()
if message.strip() == "exit":
writer.close()
break
response = f"Received {message}"
writer.write(response.encode())
await writer.drain()
async def start_server():
server = await asyncio.start_server(handle_client, "localhost", 8888)
async with server:
await server.serve_forever()
async def main():
server_task = asyncio.create_task(start_server())
schedule_task = asyncio.create_task(start_schedule())
await asyncio.gather(server_task, schedule_task)
asyncio.run(main())
在这个例子中,我们定义了一个任务函数,它将在每个10秒钟执行一次。我们还定义了一个start_schedule函数,它将调度这个任务,然后在一个while循环中运行schedule.run_pending(),并且在每个1秒钟上睡眠。
我们还定义了一个handle_client函数,它将处理客户端的输入,并对它们发送回应。最后,我们使用asyncio.start_server()启动一个socket服务器,并将其与start_server函数一起运行。
最后,我们使用asyncio.run()运行main函数,这将启动所有任务和服务器。当我们在客户端上输入“exit”时,服务器将关闭。
原文地址: https://www.cveoy.top/t/topic/gil 著作权归作者所有。请勿转载和采集!