celery-php

PHP client for Celery

Github星跟蹤圖

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

主要指標

概覽
名稱與所有者gjedeer/celery-php
主編程語言PHP
編程語言PHP (語言數: 4)
平台
許可證Other
所有者活动
創建於2011-08-19 03:51:14
推送於2021-11-30 18:07:44
最后一次提交2021-11-30 18:07:44
發布數3
最新版本名稱2.1.2 (發布於 )
第一版名稱2.0.2 (發布於 )
用户参与
星數422
關注者數31
派生數122
提交數217
已啟用問題?
問題數57
打開的問題數9
拉請求數53
打開的拉請求數5
關閉的拉請求數10
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?