"""
测试任务队列功能 - 修复版本
使用单独模块中的函数来确保多进程可pickle
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import time
import tempfile
from vools.task import TaskQueue, WorkerPool, task
from tests.test_functions import add, multiply, sometimes_fails
def test_basic_functionality():
"""测试基本功能"""
print("=== 测试基本功能 ===")
db_path = tempfile.mktemp(suffix='.db')
print(f"Database: {db_path}")
try:
queue = TaskQueue(db_path)
task_id1 = queue.submit(add, 2, 3)
task_id2 = queue.submit(multiply, 4, 5)
print(f"Task 1 submitted: {task_id1}")
print(f"Task 2 submitted: {task_id2}")
pool = WorkerPool(num_workers=2, db_path=db_path, poll_interval=0.1)
pool.start()
try:
result1 = queue.get_result(task_id1, timeout=10)
result2 = queue.get_result(task_id2, timeout=10)
print(f"Task 1 result: {result1}")
print(f"Task 2 result: {result2}")
assert result1 == 5
assert result2 == 20
print("✓ 基本功能测试通过")
finally:
pool.stop()
finally:
try:
os.unlink(db_path)
os.unlink(db_path + '-wal')
os.unlink(db_path + '-shm')
except:
pass
def main():
"""运行所有测试"""
print("任务队列系统测试(修复版本)\n")
test_basic_functionality()
print("\n🎉 所有测试通过!")
if __name__ == '__main__':
main()