pantheon-systems / terminus-scheduled-jobs-plugin
通过Terminus命令配置和管理定时任务。
Requires (Dev)
- composer/composer: ^2.4
- kint-php/kint: ^4.2
- pantheon-systems/terminus: ^3.1
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: ^3.6
- tm/tooly-composer-script: ^1.4
This package is not auto-updated.
Last update: 2024-09-11 19:33:03 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分钟。
电子邮件
不允许通过sendmail
或localhost
SMTP发送电子邮件。可以通过与第三方电子邮件提供商的集成发送电子邮件,无论是通过他们的SMTP服务器还是API集成。