94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
|
|
#!/usr/bin/env python
|
||
|
|
# -*- encoding: utf-8 -*-
|
||
|
|
"""
|
||
|
|
@File : test_pyqt6_scheduler.py
|
||
|
|
@Time : 2025-10-26 10:40:00
|
||
|
|
@Author : chakcy
|
||
|
|
@description : 独立 pyqt6 调度器测试
|
||
|
|
"""
|
||
|
|
|
||
|
|
import time
|
||
|
|
from queue_sqlite.scheduler import QueueScheduler
|
||
|
|
from queue_sqlite.model import MessageItem
|
||
|
|
from queue_sqlite.mounter import task
|
||
|
|
|
||
|
|
|
||
|
|
@task(meta={"task_name": "pyqt6_example"})
|
||
|
|
def pyqt6_example_task(message_item: MessageItem):
|
||
|
|
"""pyqt6 调度器测试任务"""
|
||
|
|
print(f"处理任务: {message_item.id}")
|
||
|
|
# 模拟一些工作
|
||
|
|
result = sum(i * i for i in range(1000))
|
||
|
|
message_item.result = {
|
||
|
|
"status": "completed",
|
||
|
|
"result": result,
|
||
|
|
"task_id": message_item.id,
|
||
|
|
}
|
||
|
|
return message_item
|
||
|
|
|
||
|
|
|
||
|
|
@task(meta={"task_name": "async_pyqt6_task"})
|
||
|
|
async def async_pyqt6_task(message_item: MessageItem):
|
||
|
|
"""异步任务测试"""
|
||
|
|
import asyncio
|
||
|
|
|
||
|
|
print(f"处理异步任务: {message_item.id}")
|
||
|
|
await asyncio.sleep(0.1) # 模拟异步操作
|
||
|
|
message_item.result = {"status": "async_completed", "task_id": message_item.id}
|
||
|
|
return message_item
|
||
|
|
|
||
|
|
|
||
|
|
def task_callback(message_item: MessageItem):
|
||
|
|
"""任务完成回调"""
|
||
|
|
print(f"任务完成回调: {message_item.id}, 结果: {message_item.result}")
|
||
|
|
|
||
|
|
|
||
|
|
def test_pyqt6_scheduler():
|
||
|
|
"""测试独立的 pyqt6 调度器"""
|
||
|
|
|
||
|
|
# 创建独立的 pyqt6 调度器
|
||
|
|
scheduler = QueueScheduler(
|
||
|
|
scheduler_type="pyqt6", # 指定使用 pyqt6 调度器
|
||
|
|
)
|
||
|
|
|
||
|
|
print("启动 pyqt6 调度器...")
|
||
|
|
scheduler.start()
|
||
|
|
|
||
|
|
try:
|
||
|
|
# 发送同步任务
|
||
|
|
for i in range(5):
|
||
|
|
message = MessageItem(
|
||
|
|
content={"task_index": i, "type": "sync"},
|
||
|
|
destination="pyqt6_example_task",
|
||
|
|
)
|
||
|
|
scheduler.send_message(message, task_callback)
|
||
|
|
print(f"发送同步消息: {message.id}")
|
||
|
|
|
||
|
|
# 发送异步任务
|
||
|
|
for i in range(5):
|
||
|
|
message = MessageItem(
|
||
|
|
content={"task_index": i, "type": "async"},
|
||
|
|
destination="async_pyqt6_task",
|
||
|
|
)
|
||
|
|
scheduler.send_message(message, task_callback)
|
||
|
|
print(f"发送异步消息: {message.id}")
|
||
|
|
|
||
|
|
# 等待任务处理
|
||
|
|
print("等待任务处理...")
|
||
|
|
for i in range(10):
|
||
|
|
queue_info = scheduler.scheduler.get_queue_info()
|
||
|
|
print(f"队列状态: {queue_info}")
|
||
|
|
time.sleep(1)
|
||
|
|
|
||
|
|
if queue_info.get("queue_length", 0) == 0:
|
||
|
|
break
|
||
|
|
|
||
|
|
finally:
|
||
|
|
print("停止 pyqt6 调度器...")
|
||
|
|
scheduler.stop()
|
||
|
|
print("测试完成")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
test_pyqt6_scheduler()
|