modify: 代码优化

This commit is contained in:
chakcy 2025-09-25 21:53:58 +08:00
parent bcb3304338
commit cfc4028a51
8 changed files with 173 additions and 40 deletions

View File

@ -5,7 +5,7 @@ use pyo3::prelude::*;
use queue_operation::QueueOperation; use queue_operation::QueueOperation;
use task_mounter::TaskMounter; // 导入结构体 // 导入结构体 use task_mounter::TaskMounter; // 导入结构体 // 导入结构体
#[pymodule] #[pymodule(gil_used = false)]
fn core(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { fn core(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<TaskMounter>()?; m.add_class::<TaskMounter>()?;
m.add_class::<QueueOperation>()?; m.add_class::<QueueOperation>()?;

View File

@ -35,18 +35,133 @@ class core:
""" """
... ...
def dequeue(self, size: int = 1) -> List[dict]: ... def dequeue(self, size: int = 1) -> List[dict]:
def get_queue_length(self) -> int: ... """
def get_completed_messages(self) -> List[dict]: ... Dequeue messages.
def get_result(self, message_id: str): ...
def update_status(self, message_id: str, status: MessageStatus): ... Args:
def update_result(self, message_id: str, result: str): ... size (int, optional): The number of messages to dequeue. Defaults to 1.
def delete_message(self, message_id: str): ...
def clean_old_messages(self, days: int): ... Returns:
def clean_expired_messages(self): ... List[dict]: The dequeued messages.
def remove_expired_messages(self, days: int): ... """
...
def get_queue_length(self) -> int:
"""
Get the length of the queue.
Returns:
int: The length of the queue.
"""
...
def get_completed_messages(self) -> List[dict]:
"""
Get the completed messages.
Returns:
List[dict]: The completed messages.
"""
...
def get_result(self, message_id: str):
"""
Get the result of a message.
Args:
message_id (str): The message id.
Returns:
str: The result of the message.
"""
...
def update_status(self, message_id: str, status: MessageStatus):
"""
Update the status of a message.
Args:
message_id (str): The message id.
status (MessageStatus): The status of the message.
Raises:
ValueError: If the status is not valid.
"""
...
def update_result(self, message_id: str, result: str):
"""
Update the result of a message.
Args:
message_id (str): The message id.
result (str): The result of the message.
"""
...
def delete_message(self, message_id: str):
"""
Delete a message.
Args:
message_id (str): The message id.
Raises:
ValueError: If the message id is not valid.
"""
...
def clean_old_messages(self, days: int):
"""
Clean old messages.
Args:
days (int): The number of days to keep messages.
"""
...
def clean_expired_messages(self):
"""
Clean expired messages.
Raises:
Exception: If an unknown error occurs.
"""
...
def remove_expired_messages(self, days: int):
"""
Remove expired messages.
Args:
days (int): The number of days to keep messages.
"""
...
class TaskMounter: class TaskMounter:
def __init__(self, task_class: type[TaskMounter]): ... def __init__(self, task_class: type[TaskMounter]):
def get_task_list(self) -> List[str]: ... """
def get_task_function(self, name: str) -> Callable: ... Initialize the task mounter.
Args:
task_class (type[TaskMounter]): The task class.
"""
...
def get_task_list(self) -> List[str]:
"""
Get the task list.
Returns:
List[str]: The task list.
"""
...
def get_task_function(self, name: str) -> Callable:
"""
Get the task function.
Args:
name (str): The name of the task.
Returns:
Callable: The task function.
Raises:
ValueError: If the task name is not valid.
"""
...

View File

@ -1,4 +1,4 @@
from .task_mounter import TaskMounter from .task_mounter import task
from .listen_mounter import ListenMounter from .listen_mounter import listener
__all__ = ["TaskMounter", "ListenMounter"] __all__ = ["task", "listener"]

View File

@ -9,10 +9,12 @@ class ListenMounter:
@staticmethod @staticmethod
def listener(): def listener():
"""带参数的装饰器""" """带参数的装饰器"""
def decorator(function: Callable): def decorator(function: Callable):
# 使用自定义名称或函数原名 # 使用自定义名称或函数原名
setattr(ListenMounter, function.__name__, function) setattr(ListenMounter, function.__name__, function)
return function return function
return decorator return decorator
@classmethod @classmethod
@ -33,9 +35,18 @@ class ListenMounter:
if ( if (
callable(attr_value) callable(attr_value)
and not attr_name.startswith("__") and not attr_name.startswith("__")
and attr_name not in ["mount_Listener", "listener", "get_Listener_function", "get_Listener_list"] and attr_name
not in [
"mount_Listener",
"listener",
"get_Listener_function",
"get_Listener_list",
]
): ):
listener_list.append(attr_name) listener_list.append(attr_name)
return listener_list return listener_list
def listener():
return ListenMounter.listener()

View File

@ -9,11 +9,13 @@ class TaskMounter:
@staticmethod @staticmethod
def task(meta: dict = {}): def task(meta: dict = {}):
"""带参数的装饰器""" """带参数的装饰器"""
def decorator(function: Callable): def decorator(function: Callable):
# 使用自定义名称或函数原名 # 使用自定义名称或函数原名
function.meta = meta # type: ignore function.meta = meta # type: ignore
setattr(TaskMounter, function.__name__, function) setattr(TaskMounter, function.__name__, function)
return function return function
return decorator return decorator
@classmethod @classmethod
@ -34,9 +36,14 @@ class TaskMounter:
if ( if (
callable(attr_value) callable(attr_value)
and not attr_name.startswith("__") and not attr_name.startswith("__")
and attr_name not in ["mount_task", "task", "get_task_function", "get_task_list"] and attr_name
not in ["mount_task", "task", "get_task_function", "get_task_list"]
): ):
task_list.append(attr_name) task_list.append(attr_name)
return task_list return task_list
# task 装饰器
def task(meta: dict = {}):
return TaskMounter.task(meta)

View File

@ -1,8 +1,8 @@
from queue_sqlite.mounter.task_mounter import TaskMounter from queue_sqlite.mounter import task
from queue_sqlite.model import MessageItem from queue_sqlite.model import MessageItem
@TaskMounter.task(meta={"task_name": "test"}) @task(meta={"task_name": "test"})
async def async_example(message_item: MessageItem): async def async_example(message_item: MessageItem):
def fibonacci_generator(): def fibonacci_generator():
a, b = 0, 1 a, b = 0, 1

View File

@ -1,8 +1,8 @@
from queue_sqlite.mounter.task_mounter import TaskMounter from queue_sqlite.mounter import task
from queue_sqlite.model import MessageItem from queue_sqlite.model import MessageItem
@TaskMounter.task(meta={"task_name": "test"}) @task(meta={"task_name": "test"})
def example(message_item: MessageItem): def example(message_item: MessageItem):
def fibonacci_generator(): def fibonacci_generator():
a, b = 0, 1 a, b = 0, 1

View File

@ -1,5 +1,5 @@
from queue_sqlite.core import core from queue_sqlite.core import core
from queue_sqlite.mounter import TaskMounter from queue_sqlite.mounter.task_mounter import TaskMounter
from queue_sqlite.model import MessageItem from queue_sqlite.model import MessageItem