[컴][php] php 에서 Celery 사용하기

php 에서 celery 요청하기 /


php 에서 Celery 사용하기

php 에서 celery 에 일을 시키기 위해서 celery 에서 사용하는 RadditMQ 로 message 를 날려주면 된다. 이 RaddiMQ 가 AMQ protocol 을 이용한다. 그래서 아래 php library 를 사용하기로 했다.

task run 요청

celery worker 실행

아래 celery worker 를 받아서 실행후에

celery -A pworker worker -l info --config=celconfig.py


task 실행 요청

'pworker.tasks.add' 라는 task 를 실행하라고 요청할 때 argument 는 4, 6 을 보낸다.

celery 가 사용하는 RabbitMQ 는 기본적으로
  • queue 이름을 celery 로 하고,
  • exchange 를 celery 로 하고,
  • routing_key 는 없다.


아래처럼 request 를 보내면 된다.
<?php
use Bunny\Client;
require '../vendor/autoload.php';

$client = (new Client())->connect();
$channel = $client->channel();
$channel->queueDeclare('hello', false, false, false, false);
$channel->publish('{"id": "'.uniqid('php_').'", 
                    "task": "pworker.tasks.add",
                    "args" : [4, 6],
                    "kwargs": {}
                    }', 
                ['content-type' => 'application/json',
                'content-encoding' => 'UTF-8',],
                'celery',   // 'exchange'
                'celery');  // 'routing-key'
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$client->disconnect();






See Also

  1. [컴] Nodejs 에서 RabbitMQ 로 message 보내기

References

  1. Run Celery tasks from PHP | Mauro Rocco
  2. Workers Guide — Celery 4.0.2 documentation



댓글 없음:

댓글 쓰기