feat: use coroutines delay system
This commit is contained in:
parent
31d4932fdf
commit
f02bf6ac5a
1 changed files with 20 additions and 15 deletions
|
@ -26,6 +26,7 @@ class ScheduleExecutions extends ScheduleBase
|
|||
$queue = $pools->get('queue')->pop();
|
||||
$connection = $queue->getResource();
|
||||
$queueForFunctions = new Func($connection);
|
||||
$intervalEnd = (new \DateTime())->modify('+' . self::ENQUEUE_TIMER . ' seconds');
|
||||
|
||||
foreach ($this->schedules as $schedule) {
|
||||
if (!$schedule['active']) {
|
||||
|
@ -38,25 +39,29 @@ class ScheduleExecutions extends ScheduleBase
|
|||
continue;
|
||||
}
|
||||
|
||||
$now = new \DateTime();
|
||||
$scheduledAt = new \DateTime($schedule['schedule']);
|
||||
|
||||
if ($scheduledAt > $now) {
|
||||
if ($scheduledAt <= $intervalEnd) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$queueForFunctions
|
||||
->setType('schedule')
|
||||
// Set functionId instead of function as we don't have $dbForProject
|
||||
// TODO: Refactor to use function instead of functionId
|
||||
->setFunctionId($schedule['resource']['functionId'])
|
||||
->setExecution($schedule['resource'])
|
||||
->setMethod($schedule['data']['method'] ?? 'POST')
|
||||
->setPath($schedule['data']['path'] ?? '/')
|
||||
->setHeaders($schedule['data']['headers'] ?? [])
|
||||
->setBody($schedule['data']['body'] ?? '')
|
||||
->setProject($schedule['project'])
|
||||
->trigger();
|
||||
$delay = $scheduledAt->getTimestamp() - (new \DateTime())->getTimestamp();
|
||||
|
||||
\go(function () use ($queueForFunctions, $schedule, $delay) {
|
||||
\sleep($delay);
|
||||
|
||||
$queueForFunctions
|
||||
->setType('schedule')
|
||||
// Set functionId instead of function as we don't have $dbForProject
|
||||
// TODO: Refactor to use function instead of functionId
|
||||
->setFunctionId($schedule['resource']['functionId'])
|
||||
->setExecution($schedule['resource'])
|
||||
->setMethod($schedule['data']['method'] ?? 'POST')
|
||||
->setPath($schedule['data']['path'] ?? '/')
|
||||
->setHeaders($schedule['data']['headers'] ?? [])
|
||||
->setBody($schedule['data']['body'] ?? '')
|
||||
->setProject($schedule['project'])
|
||||
->trigger();
|
||||
});
|
||||
|
||||
$dbForConsole->deleteDocument(
|
||||
'schedules',
|
||||
|
|
Loading…
Reference in a new issue