php newclient,PHP client for Celery

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

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

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 */

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值