flowpack / task
Neos Flow的任务调度器
Requires
- php: >=7.4
- dragonmantank/cron-expression: ^3.1
- neos/flow: *
- symfony/lock: ^5.3
README
此软件包提供了一个简单易用的Neos Flow任务调度器。任务通过设置进行配置,可以通过cron语法配置重复任务。详细选项配置了第一次和最后一次执行,以及处理任务的类选项。
调度和运行任务相互独立:由Scheduler
调度任务,由TaskRunner
执行。这种架构允许接收和显示已执行任务的指标。
此软件包背后的大多数架构思想都来源于php-task,并重新实现为Neos Flow。
安装
composer require 'flowpack/task'
配置
定义任务
Flowpack: Task: tasks: 'a-unique-identifier': label: The label of this task description: Some detailed description of this task # A class, implementing the TaskHandlerInterface handlerClass: 'Vendor\Package\TaskHandler\TaskHandlerClass' cronExpression: '*/5 * * * *' # A workload, eg. some configuration, given to the taskHandler workload: interval: PT5M
通用选项
-
lockStorage
:用于实现LockingTaskHandlerInterface
的任务处理器的锁存储配置字符串。有关更多选项,请参阅https://symfony.ac.cn/doc/current/components/lock.html#available-stores -
keepTaskExecutionHistory
:在数据库中保留的任务执行次数(默认:3)
实现任务处理器
任务处理器包含执行特定任务的代码。您的命令处理器必须实现以下接口之一
Flowpack\Task\TaskHandler\TaskHandlerInterface
基本任务。接口要求实现方法handle(WorkloadInterface $workload): string
。返回值作为成功执行任务的信息。
Flowpack\Task\TaskHandler\RetryTaskHandlerInterface
还需要实现getMaximumAttempts(): int
。允许任务在失败时重试。
Flowpack\Task\TaskHandler\LockingTaskHandlerInterface
还需要实现getLockIdentifier(WorkloadInterface $workload): string
。返回值指定要获取的锁。当此类任务正在运行时,其他需要相同锁的任务将被跳过。
可用命令
调度和运行应执行的任务
./flow task:run
调度和运行单个任务
./flow task:runSingle <taskIdentifier>
显示所有定义和计划的任务列表
./flow task:list
显示特定任务的详细信息
./flow task:show <taskIdentifier>