tarantool / jobserver

用于创建和处理后台任务的框架应用程序。

资助包维护!
rybakit

安装: 18

依赖者: 0

建议者: 0

安全: 0

星星: 14

关注者: 4

分支: 3

开放问题: 0

类型:项目

dev-master 2020-05-02 23:25 UTC

This package is auto-updated.

Last update: 2024-09-16 02:40:24 UTC


README

JobServer 是一个用于创建和处理由 Tarantool 支持的后台任务的框架应用程序的骨架仓库。它包含您从零开始快速启动所需的配置文件和文件夹。

安装

创建新应用程序的推荐方法是使用 Composer

composer create-project tarantool/jobserver -s dev

快速开始

首先,通过复制 docker-compose.override.yml.dist(或者如果您想测试包括具有自动故障转移和监控工具的 Tarantool 集群的完整设置,则复制 docker-compose.override.yml.full.dist)并根据自己的需求进行自定义来创建自己的 docker-compose.override.yml 文件。同样,对 .env.dist 以及位于 app/configres 中的所有 *.dist 文件进行相同的操作。

然后,转到项目目录并执行以下命令

docker-compose up -d

命令成功完成后,您将拥有一个正在运行的服务器,准备执行任务。如果您以跟踪模式打开日志文件(tail -f var/log/workers.log),您将看到如下内容

[2017-11-19 00:00:23] default:worker.DEBUG: Idling... [] []
[2017-11-19 00:00:24] default:worker.DEBUG: Idling... [] []
[2017-11-19 00:00:25] default:worker.DEBUG: Idling... [] []

现在,让我们尝试将任务添加到队列中。此存储库包含一个 示例作业,该作业将问候语写入日志。通过运行以下命令

docker-compose exec worker ./jobserver queue:put default -H tarantool \
    '{"payload": {"service": "greet", "args": {"name": "foobar"}}}'

我们将任务添加到 default 队列中,其中包含作业有效负载,其中 greet 是作业名称,foobar 是传递给作业可调用的参数。

现在在日志中您将看到作业正在执行

[2017-11-19 00:00:32] jobserver.INFO: HELLO FOOBAR [] []
[2017-11-19 00:00:33] default:worker.DEBUG: Idling... [] []
[2017-11-19 00:00:34] default:worker.INFO: Task #0 was successfully processed. {"payload":{"args":{"name":"foobar"},"service":"greet"}} []

此外,您还可以直接在控制台中运行作业,绕过队列

docker-compose exec worker ./jobserver -vvv handler:greet foobar

要从控制台运行作业,您需要编写一个 symfony 命令适配器并将其注册在 app/config/commands.php 中。这是 GreetHandler 的适配器外观:GreetCommand

要查看所有已注册命令的列表,请运行

docker-compose exec worker ./jobserver

Tarantool

要使用 Tarantool 的 Web 界面,请打开浏览器并访问 http://localhost:8001 地址(确保 Docker 容器正在运行)。

要作为管理员进入正在运行的 Docker 容器中的 Tarantool 控制台,请执行

docker-compose exec tarantool tarantoolctl connect /var/run/tarantool/tarantool.sock

在服务器上

sudo tarantoolctl enter jobserver_instance

在服务器上作为作业队列用户

sudo tarantoolctl connect $TNT_JOBQUEUE_USER:$TNT_JOBQUEUE_PASSWORD@$TNT_JOBQUEUE_HOST:3301

监控

打开您的浏览器并访问

Grafana

请确保使用 docker-compose.override.yml.full.dist 的副本,以便所有监控容器都在运行。

测试

docker-compose exec worker vendor/bin/phpunit

调试

要调试作业运行器,首先停止工作容器

docker-compose stop worker

然后,开始监听 PHP 调试连接,然后执行

LOCAL_IP=<your-local-ip> docker-compose run --rm worker bash -c ' \
    TNT_JOBQUEUE_PASSWORD=jobserver \
    vendor/bin/jobqueue run default \
    --config app/config/jobqueue.php \
    --executors-config app/config/executors.php \
    --user jobserver \
    --host tarantool \
'

查看此手册了解如何在PhpStorm中同时调试多个进程(例如,运行器和后台任务)的方法。

许可证

此库采用MIT许可证发布。有关详细信息,请参阅捆绑的LICENSE文件。