Vadym Holoveichuk
Vadym Holoveichuk

Reputation: 85

Celery check if queue is executing

I have to spawn celery tasks, which have to have some namespace (for example user id). So I'm spawn it by

scrapper_start.apply_async((request.user.id,), queue=account.Account_username)
app.control.add_consumer(account.Account_username, reply=True)

And tasks spawns recursively, from other task. Now I have to check, if tasks of queue are executing. Tried to check list length in redis, it return true number before celery start executing. How to solve this problem. I need only to check, if queue or consumer is executing or already empty. Thanks

Upvotes: 4

Views: 9715

Answers (1)

Chillar Anand
Chillar Anand

Reputation: 29594

If you just want to inspect the queue, you do this from command line itself.

 from celery.task.control import inspect
 i = inspect('scrapper_start')
 i.active()  #  get a list of active tasks

In addition to checking which are currently executing, you can also do the following.

 i.registered() # get a list of tasks registered
 i.scheduled # get a list of tasks waiting
 i.reserved() #tasks that has been received, but waiting to be executed

This command line inspection is good if you want to check once in a while.

For some reason, if you want to monitor them continuously, you can use Flower which provides a beautiful interface to monitor workers. enter image description here

Upvotes: 9

Related Questions