添加自定义任务
在 SRA 中添加自定义任务
Section titled “在 SRA 中添加自定义任务”本章节介绍如何在 SRA 中添加一个自定义任务。
- 已安装 SRA 或已获取 SRA 源码
- 了解 Python 编程基础
- 文本编辑器(如 VSCode、Notepad++)
打开 SRA 的安装目录或源码目录,找到
tasks文件夹。
这里存放了所有的任务脚本。

-
创建一个新的 Python 文件,例如
MyCustomTask.py。 -
在文件中编写任务代码,例如:
from SRACore.task import BaseTask, taskfrom SRACore.util.logger import logger@taskclass MyCustomTask(BaseTask):def run(self):logger.info("这是我的自定义任务!")解释: 这是一个简单的任务类,继承自
BaseTask,并实现了run方法,在运行时会打印一条日志信息。from SRACore.task import BaseTask:导入任务基类。from SRACore.util.logger import logger:导入日志记录器。class MyCustomTask(BaseTask)::定义一个新的任务类。def run(self)::实现任务的主要逻辑。logger.info("这是我的自定义任务!"):打印日志信息。BaseTask类是所有任务的基类,必须继承它才能被 SRA 识别为任务。BaseTask要求实现run方法,作为任务的入口点。@task装饰器将任务注册到 SRA 中,使其能够被识别和调用。
-
注册任务: 无需手动修改任何注册代码,SRA 会自动扫描
tasks文件夹中的所有 Python 文件(不包括子文件夹中的),并将其中定义的任务类注册到系统中。 只要你的任务类正确地继承自BaseTask并使用@task装饰器,它就会被 SRA 自动识别和加载。 -
测试你的任务类: 在进行下一步之前,确保你所有的修改都已保存。 运行 SRA:
- 如果你使用的是安装的 SRA,请在 SRA 安装目录下找到
SRA-cli.exe并运行它。 - 如果你使用的是源码,请参考前面的章节了解如何运行 SRA。
如果一切正常,你应该能在 SRA-cli 中看到你的自定义任务已被加载,得到类似如下的输出:
DEBUG | Successfully load task: [class 'tasks.StartGameTask.StartGameTask',class 'tasks.TrailblazePowerTask.TrailblazePowerTask',class 'tasks.ReceiveRewardsTask.ReceiveRewardsTask',class 'tasks.CosmicStrifeTask.CosmicStrifeTask',class 'tasks.MissionAccomplishTask.MissionAccomplishTask',class 'tasks.MyCustomTask.MyCustomTask'>SRA 会打印出已加载的任务列表,其中应包含
MyCustomTask,你的任务已成功注册,它的索引为 5.在 SRA-cli 中,运行以下命令来执行你的自定义任务:
task single 5或者
task single MyCustomTask你应该能在控制台看到日志输出:
sra> task single 512:28:40[7916] | DEBUG | [Start]12:28:40[7916] | DEBUG | run single task: config=Default, task=512:28:40[7916] | DEBUG | config: ...12:28:40[7916] | DEBUG | running task: MyCustomTask12:28:40[7916] | INFO | 这是我的自定义任务!12:28:40[7916] | ERROR | 任务 'MyCustomTask' 失败。停止进一步执行。12:28:40[7916] | DEBUG | [Done]sra>这表示你的任务已成功运行。 你可能注意到日志中有一条错误信息
任务 'MyCustomTask' 失败。停止进一步执行。,这是因为我们没有在任务执行完成后返回成功状态。在
run方法的末尾添加以下代码以返回成功状态:return True现在再次运行任务,你应该不会再看到错误信息。
- 如果你使用的是安装的 SRA,请在 SRA 安装目录下找到
-
恭喜! 你已经成功创建并运行了一个自定义任务!如果想实现更复杂的功能,可以参考 SRA 的其他任务脚本,和 SRA 提供的 API 文档。
