冷锋实验室/辛黛瑞拉

由 HTTP 触发的后台任务执行器

dev-master 2023-01-24 17:47 UTC

This package is auto-updated.

Last update: 2024-09-24 21:37:35 UTC


README

辛黛瑞拉是一个易于配置的异步后台和计划任务运行守护进程,您可以通过 HTTP 触发它。其目的是支持主应用程序。

特性

  • 后台任务:辛黛瑞拉将在后台运行任务,而不需要应用程序阻塞。
  • 异步任务:辛黛瑞拉可以同时运行多个任务,以便支持的主应用程序不需要处理这种逻辑。
  • 任务调度:任务可以在辛黛瑞拉中调度,并在指定的指定时间后大约 50 毫秒内运行。
  • 任务排队:辛黛瑞拉可用于排队后台任务,以便它们在后台一个接一个地运行。

动机

PHP 网络应用程序通常不以居民服务的形式存在。它们的生命周期在满足 HTTP 请求时结束。因此,它们不应该管理长时间运行的后台作业。通常的解决方案是使用 cron 来管理后台作业,然而这限制了作业可以触发的时机,并且意味着作业不能立即运行。

辛黛瑞拉是一个本地服务,用于执行后台作业。您通过 HTTP 信号您想让她运行的任务,然后继续。

辛黛瑞拉留在服务器上,执行长时间运行的后台进程,比如从壁炉里挑豆子,而您的应用程序去参加舞会。

任务

任务是预定义的工作单元,可以通过传递选项进行配置。任务的作业立即执行或延迟,并返回一个承诺来执行作业。

任务附加到辛黛瑞拉的端点(即,对配置端点的 POST/GET 请求将执行特定任务)。配置端点的方法在下面的 配置 部分中介绍。

所有任务都接受基本参数 "id"。这可以设置为任何字符串值,并将其与该任务一起保留,以便您可以在以后识别其结果。

任务类型

从壁炉里挑豆子(pick_lentils)

这是一个演示任务。

它接受参数 lentils,并返回一个承诺,表示此后台任务将花费 lentils 秒来完成。

lentils 秒后,任务解决。

** 参数: **

  • id:用于识别此任务的字符串。
  • lentils:运行时间(秒)。

试穿拖鞋(try_on_slipper)

这是一个演示任务。

它立即运行并返回一个字符串。

** 参数: **

  • id:用于识别此任务的字符串。

HTTP 请求(http_request)

此任务返回一个承诺,以运行在选项中定义的 HTTP 请求。

** 参数: **

  • id:用于识别此任务的字符串。
  • method:'GET' 或 'POST' 之一,控制 HTTP 请求方法。
  • body:包含在 HTTP 请求中的 HTTP 主体
  • headers:键 => 值的数组/对象,形成 HTTP 头部
  • timeout:HTTP 请求超时时间(秒)(默认为 15
  • url:要发出 HTTP 请求的 URL。

状态(status)

此任务立即返回辛黛瑞拉中正在运行或挂起的任务的当前状态。

** 参数: **

  • id:用于识别此任务的字符串。

计划刷新(schedule_refresh)

此任务返回一个承诺以刷新所有任务计划。

** 参数: **

  • id:用于识别此任务的字符串。

任务运行器(task_runner)

任务运行器任务可以同时运行多个任务。此任务允许您在单个请求中同时运行其他任务。

它还有一个可选的选项 resolve,它可以保留一个在所有任务完成后运行的附加任务。

** 参数: **

  • id:用于识别此任务的字符串。
  • tasks:要异步运行的任务的数组。
  • resolve:在所有任务完成后运行的附加任务。

队列任务(queued_task)

此任务作为一个名为 task 的选项,并将其添加到 queue 中的命名队列中。每个队列每次只运行一个任务。一旦指定的任务完成,将会运行 resolve 选项中的可选任务。如果队列中还有其他任务,则 resolve 任务将与下一个任务同时运行。

** 参数: **

  • id:用于识别此任务的字符串。
  • queue:此任务应添加到的队列名称。
  • task:应运行的任务。
  • resolve:在任务完成后运行的任务。

配置

默认配置

设置配置

入门指南

先决条件

  • PHP 7.0 或更高版本
  • Composer

安装步骤

  1. 克隆主分支
  2. 运行 $ composer install

运行

简单地运行 $ ./bin/cinderella 以默认配置启动 Cinderella。

或者如果您已经定义了配置

  1. 在 yaml 文件中定义您的任务,例如 'config.yaml'
  2. 运行 cinderella $ ./bin/cinderella config.yaml

配置

Cinderella 接受并需要恰好一个参数,即包含其 YAML 配置的文件名。

配置文件定义了 Cinderella 的所有运行时配置。

部署

容器

运行

podman run --rm -d coldfrontlabs/cinderella:latest

带有任务调度

podman run --rm -d -e CINDERELLA_SCHEDULE_URL=http://url.to/my/schedule coldfrontlabs/cinderella:latest

注意事项

Cinderella 仍在开发中,并且配置验证尚不完整。

构建使用

  • PHP - 语言
  • AMP - HTTP 服务器和异步进程管理器

编码标准

PSR2