How to post a task on a celery-rabbitmq queue in PHP?

Viewed 5912

I have below versions of celery and rabbitmq installed -

celery 3.1.6
rabbitmq 3.1.1

I can post a task to the default queue from PHP -

//client.php
<?php
require 'celery-php/celery.php';
$c = new Celery('localhost', 'guest', 'guest', '/');
$result = $c->PostTask('tasks.add', array(2,2));

My worker module is in python -

# tasks.py
from celery import Celery
celery = Celery('tasks', broker='amqp://guest:guest@localhost:5672//')
@celery.task(queue='demo', name='add')
def add(x, y):
    return x + y

I run the celery worker and client like this -

# terminal window 1
$ celery -A tasks worker --loglevel=info
# terminal window 2
$ php -f client.php

This works. I see below output in terminal window 1 :

Received task: tasks.add[php_52b1759141a8b3.43107845]
Task tasks.add[php_52b1759141a8b3.43107845] succeeded in 0.000701383920386s: 4

But I want to have different queues. For a demonstration, let's say I only want one queue called demo. So I run my celery worker like this -

$ celery -A tasks worker --loglevel=info -Q demo

But it's not working. The task is not getting executed. I guess it's probably because PHP code is posting the task on default queue : celery (apparently not on demo queue).

How do I post my task on a particular queue in PHP? Please help.

1 Answers
Related