Compare commits

...
Author SHA1 Message Date
Matej Bačo 94b33e6cf8 PoC for init, shutdown and resources in worker 2025-06-24 10:54:29 +02:00
5 changed files with 95 additions and 4 deletions
@@ -2,7 +2,7 @@
namespace Appwrite\Platform\Modules\Functions\Services;
use Appwrite\Platform\Modules\Functions\Workers\Builds;
use Appwrite\Platform\Modules\Functions\Workers\Builds\Builds;
use Utopia\Platform\Service;
class Workers extends Service
@@ -10,6 +10,6 @@ class Workers extends Service
public function __construct()
{
$this->type = Service::TYPE_WORKER;
$this->addAction(Builds::getName(), new Builds());
new Builds($this);
}
}
@@ -1,6 +1,6 @@
<?php
namespace Appwrite\Platform\Modules\Functions\Workers;
namespace Appwrite\Platform\Modules\Functions\Workers\Builds\Actions;
use Ahc\Jwt\JWT;
use Appwrite\Event\Event;
@@ -43,7 +43,7 @@ use Utopia\VCS\Adapter\Git\GitHub;
use function Swoole\Coroutine\batch;
class Builds extends Action
class Handler extends Action
{
public static function getName(): string
{
@@ -55,6 +55,7 @@ class Builds extends Action
*/
public function __construct()
{
$this->setType(self::TYPE_DEFAULT);
$this
->desc('Builds worker')
->groups(['builds'])
@@ -117,6 +118,8 @@ class Builds extends Action
Executor $executor,
array $plan
): void {
$startTime = \microtime(true);
$payload = $message->getPayload() ?? [];
if (empty($payload)) {
@@ -0,0 +1,32 @@
<?php
namespace Appwrite\Platform\Modules\Functions\Workers\Builds\Actions;
use Exception;
use Utopia\Platform\Action;
class Init extends Action
{
public static function getName(): string
{
return 'builds-init';
}
/**
* @throws Exception
*/
public function __construct()
{
$this->setType(self::TYPE_INIT);
$this
->desc('Builds worker init hook')
->groups(['builds'])
->inject('buildStartTime')
->callback($this->action(...));
}
public function action(float $startTime): void
{
\var_dump("Started at {$startTime}");
}
}
@@ -0,0 +1,33 @@
<?php
namespace Appwrite\Platform\Modules\Functions\Workers\Builds\Actions;
use Exception;
use Utopia\Platform\Action;
class Shutdown extends Action
{
public static function getName(): string
{
return 'builds-shutdown';
}
/**
* @throws Exception
*/
public function __construct()
{
$this->setType(self::TYPE_SHUTDOWN);
$this
->desc('Builds worker shutdown hook')
->groups(['builds'])
->inject('buildStartTime')
->callback($this->action(...));
}
public function action(float $startTime): void
{
\var_dump("Finished at {$startTime}");
\var_dump("Finished in " . (microtime(true) - $startTime) . " seconds");
}
}
@@ -0,0 +1,23 @@
<?php
namespace Appwrite\Platform\Modules\Functions\Workers\Builds;
use Appwrite\Platform\Modules\Functions\Services\Workers;
use Appwrite\Platform\Modules\Functions\Workers\Builds\Actions\Handler as BuildsHandler;
use Appwrite\Platform\Modules\Functions\Workers\Builds\Actions\Init as BuildsInit;
use Appwrite\Platform\Modules\Functions\Workers\Builds\Actions\Shutdown as BuildsShutdown;
use Utopia\Queue\Server;
class Builds
{
public function __construct(Workers $worker)
{
$worker->addAction(BuildsInit::getName(), new BuildsInit());
$worker->addAction(BuildsHandler::getName(), new BuildsHandler());
$worker->addAction(BuildsShutdown::getName(), new BuildsShutdown());
Server::setResource('buildStartTime', function () {
return \microtime(true);
});
}
}