2017 © Pedro Peláez
 

library celery-php

PHP client for Celery task queue

image

ym-careers/celery-php

PHP client for Celery task queue

  • Wednesday, May 23, 2018
  • by dev.careers@yourmembership.com
  • Repository
  • 0 Watchers
  • 0 Stars
  • 75 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 436 % Grown

The README.md

PHP client capable of executing Celery tasks and reading asynchronous results., (*1)

Uses AMQP extension from PECL, the PHP AMQP implementation or Redis and the following settings in Celery:, (*2)

result_serializer = 'json'
result_expires = None
task_track_started = False

The required PECL-AMQP version is at least 1.0. Last version tested is 1.4., (*3)

Last PHP-amqplib version tested is 2.5.1., (*4)

Last predis version tested is 1.0.1., (*5)

Last Celery version tested is 3.1.19 (but check out the celery4 branch), (*6)

API documentation is dead, help wanted, (*7)

POSTING TASKS

$c = new \Celery\Celery('localhost', 'myuser', 'mypass', 'myvhost');
$result = $c->PostTask('tasks.add', array(2,2));

// The results are serializable so you can do the following:
$_SESSION['celery_result'] = $result;
// and use this variable in an AJAX call or whatever

tip: if using RabbitMQ guest user, set "/" vhost, (*8)

READING ASYNC RESULTS

while (!$result->isReady())    {
    sleep(1);
    echo '...';
}

if ($result->isSuccess()) {
    echo $result->getResult();
} else {
    echo "ERROR";
    echo $result->getTraceback();
}

GET ASYNC RESULT MESSAGE

$c = new \Celery\Celery('localhost', 'myuser', 'mypass', 'myvhost');
$message = $c->getAsyncResultMessage('tasks.add', 'taskId');

PYTHON-LIKE API

An API compatible to AsyncResult in Python is available too., (*9)

$c = new \Celery\Celery('localhost', 'myuser', 'mypass', 'myvhost');
$result = $c->PostTask('tasks.add', array(2,2));

$result->get();
if ($result->successful()) {
    echo $result->result;
}

ABOUT

Based on this blog post and reading Celery sources. Thanks to Skrat, author of Celerb for a tip about response encoding. Created for the needs of my consulting work at Massive Scale., (*10)

License is 2-clause BSD., (*11)

DEVELOPMENT

Development process and goals., (*12)

CONNECTING VIA SSL

Connecting to a RabbitMQ server that requires SSL is currently only possible via PHP-amqplib to do so you'll need to create a celery object with ssl options:, (*13)

$ssl_options = [
    'cafile' => 'PATH_TO_CA_CERT_FILE',
    'verify_peer' => true,
    'passphrase' => 'LOCAL_CERT_PASSPHRASE',
    'local_cert' => 'PATH_TO_COMBINED_CLIENT_CERT_KEY',
    'CN_match' => 'CERT_COMMON_NAME'
];

$c = new \Celery\Celery($host, $user, $password, $vhost, 'celery', 'celery', 5671, false, false, $ssl_options);

CONNECTING TO REDIS

Refer to files in testscenario/ for examples of celeryconfig.py., (*14)

$c = new \Celery\Celery(
    'localhost', /* Server */
    '', /* Login */
    'test', /* Password */
    'wutka', /* vhost */
    'celery', /* exchange */
    'celery', /* binding */
    6379, /* port */
    'redis' /* connector */
);

The Versions

23/05 2018

dev-master

9999999-dev

PHP client for Celery task queue

  Sources   Download

BSD-2-Clause

The Requires

  • php >=5.4.0

 

The Development Requires

by Shruti Nafday

task redis queue cron amqp python celery

23/05 2018

v1.0.0

1.0.0.0

PHP client for Celery task queue

  Sources   Download

BSD-2-Clause

The Requires

  • php >=5.4.0

 

The Development Requires

by Shruti Nafday

task redis queue cron amqp python celery