pantheon-systems/terminus-scheduled-jobs-plugin

通过Terminus命令配置和管理定时任务。

dev-main 2024-03-06 02:25 UTC

README

定时任务

此插件允许在Pantheon平台上安排任务。由于处于私有测试状态,该功能仅在请求后按站点启用。每个任务都在自己的容器中运行,可以访问数据库和分布式文件系统。目前,其他功能,如访问New Relic代理或安全集成,尚不可用。

安装

唯一的要求是Terminus本身,版本3.x。要安装插件,需要将当前仓库本地克隆,然后执行以下命令

terminus self:plugin:install $PATH_TO_LOCAL_CLONE

任务调度

任务调度以任务定义的形式出现,允许为每个任务设置名称、命令和UNIX cron格式的调度。

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

创建新的调度

可以通过运行以下命令创建新的调度。以下示例运行每小时执行一次的Drupal cron任务

terminus scheduledjobs:schedule:create $SITE_NAME.$ENVIRONMENT "test-scheduled-job-hourly" "drush -vvv cron" "0 * * * *"

列出调度

terminus scheduledjobs:schedule:list $SITE_NAME.$ENVIRONMENT

-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------
 ID                                     Name                        Schedule      Command                            Status    Created At (UTC)
-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------
 d178dd16-b0e3-47dc-a446-1bf4343f7fff   test-scheduled-job-hourly   0 * * * *     ls -la /files && drush -vvv cron   ENABLED   2023-05-19T07:34:26Z
-------------------------------------- --------------------------- ------------- ---------------------------------- --------- ----------------------

暂停/恢复调度

在任何时候,都可以暂停或恢复任务执行。

terminus scheduledjobs:schedule:pause $SITE_NAME.$ENVIRONMENT $SCHEDULE_ID
terminus scheduledjobs:schedule:resume $SITE_NAME.$ENVIRONMENT $SCHEDULE_ID

删除调度

terminus scheduledjobs:schedule:delete $SITE_NAME.$ENVIRONMENT $SCHEDULE_ID

任务

任务定义为与特定调度相关联的单独执行。列出任务需要获取调度ID。

terminus scheduledjobs:job:list $SITE_NAME.$ENVIRONMENT $SCHEDULE_ID

-------------------------------------- ------------------------------- ------------------------------- ---------
 ID                                     Start Time                      End Time                        Status
-------------------------------------- ------------------------------- ------------------------------- ---------
 ca93e729-58e8-489f-805b-f73d4102c5c0   2023-05-26 07:00:03 +0000 UTC   2023-05-26 07:01:57 +0000 UTC   SUCCESS
 808a3a84-b1c6-42cf-92c8-f0b6afe959c8   2023-05-26 06:00:03 +0000 UTC   2023-05-26 06:01:51 +0000 UTC   SUCCESS
 e0a74a62-6705-4f0c-830c-0190f57dc1c0   2023-05-26 05:00:00 +0000 UTC   2023-05-26 05:01:34 +0000 UTC   SUCCESS
 7effda3b-be2e-42b9-9093-cd373b7b3079   2023-05-26 04:00:00 +0000 UTC   2023-05-26 04:01:33 +0000 UTC   SUCCESS
 54c39e63-fcf5-41f0-81ec-4163fc1f498b   2023-05-26 03:00:00 +0000 UTC   2023-05-26 03:01:54 +0000 UTC   SUCCESS
 fdf2cf55-88f5-44a1-8a7e-d422291f625a   2023-05-26 02:00:02 +0000 UTC   2023-05-26 02:01:51 +0000 UTC   SUCCESS
-------------------------------------- ------------------------------- ------------------------------- ---------

日志

可以通过将任务ID传递到以下命令来查看与任务关联的日志

terminus scheduledjobs:job:logs $SITE_NAME.$ENVIRONMENT $JOB_ID

配额及其他考虑事项

此功能的私有测试性质带有在站点级别定义的配额,作为每日运行时间预算。

任务预算

每个站点每天分配300分钟的固定预算。这是所有任务持续时间的总和,从任务开始直到完成。目前对任何给定站点可以创建的调度数量没有限制。如果每日预算用尽,正在运行的任务将获得15分钟的宽限期,之后将发出超时信号。当天午夜UTC时,所有预算将重置,直到那时不会创建其他任务。在计算预算时,部分分钟将向上取整。

terminus scheduledjobs:budget:info $SITE_NAME.$ENVIRONMENT

---------------------- ------------------------ -----------
 Daily Budget Elapsed   Daily Budget Remaining   Resets In
---------------------- ------------------------ -----------
 100m                   200m                     16h11m29s
---------------------- ------------------------ -----------

任务超时

超时是动态的,取决于剩余预算加上宽限期。例如,每天开始时的每日可用预算为300分钟,这意味着第一个任务的超时时间为315分钟。当整天启动一个任务,剩余预算为60分钟时,超时将计算为75分钟。

电子邮件

不允许通过sendmaillocalhost SMTP发送电子邮件。可以通过与第三方电子邮件提供商的集成发送电子邮件,无论是通过他们的SMTP服务器还是API集成。