celery-php

PHP client for Celery

  • Owner: gjedeer/celery-php
  • Platform:
  • License:: Other
  • Category::
  • Topic:
  • Like:
    1
      Compare:

Github stars Tracking Chart

PHP client capable of executing Celery tasks and
reading asynchronous results.

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

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.

Last PHP-amqplib version tested is 2.5.1.

Last predis version tested is 1.0.1.

Requires Celery 4.0+.

API documentation is dead, help wanted

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

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.

$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.

License is 2-clause BSD.

DEVELOPMENT

Development process and goals.

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:

$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, 0, $ssl_options);

CONNECTING TO REDIS

Refer to files in testscenario/ for examples of celeryconfig.py.

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

Main metrics

Overview
Name With Ownergjedeer/celery-php
Primary LanguagePHP
Program languagePHP (Language Count: 4)
Platform
License:Other
所有者活动
Created At2011-08-18 19:51:14
Pushed At2021-11-30 10:07:44
Last Commit At2021-11-30 11:07:44
Release Count3
Last Release Name2.1.2 (Posted on )
First Release Name2.0.2 (Posted on )
用户参与
Stargazers Count421
Watchers Count32
Fork Count121
Commits Count217
Has Issues Enabled
Issues Count57
Issue Open Count9
Pull Requests Count53
Pull Requests Open Count5
Pull Requests Close Count10
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private