Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Celery Flower as Daemon

Im running celery with a redis backend. I want to run celery flower as a daemon on centos 6.2.

I understand flower is a Tornado application , so I should use a process to run a tornado application as a deamon.

Normally to start flower I use this command:

celery flower --broker=redis://localhost

I read at the below link that I need to create a python script as such: http://www.charleshooper.net/blog/python-starting-tornado-apps-at-boot-using-upstart/ (Startflower.py)

import tornado.ioloop
import tornado.web
import tornado.httpserver 

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(port)
    tornado.ioloop.IOLoop.instance().start()

However, I am unsure what to put in the 'application' variable. I tried 'celery flower --broker=redis://localhost' and 'celery flower" but neither worked

What do i need to do to get it working as a daemon??

like image 480
CraigH Avatar asked Nov 27 '12 07:11

CraigH


People also ask

How does flower work Celery?

It can be used as a bucket where programming tasks can be dumped. The program that passed the task can continue to execute and function responsively. The Celery Flower is a tool for monitoring your celery tasks and workers. It's web based and allows you to see task progress, details, worker status.

What does flower do in airflow?

Flower is a web based tool for monitoring and administrating Celery clusters. This topic describes how to configure Airflow to secure your flower instance. This is an optional component that is disabled by default in Community deployments and you need to configure it on your own if you want to use it.

What is MHER flower?

branch=master :target: https://travis-ci.org/mher/flower. Flower is a web based tool for monitoring and administrating Celery clusters.

What is Django flower?

django-flower 1.0. 0 Flower is a web based tool for monitoring and administrating Celery clusters.


1 Answers

It is preferably to run flower as a daemon using systemd. Supervisord is not compatible with Python3 that has become a new best practice. Moreover, systemd is a standard process manager for most of the modern Linux distributions.

I use systemd as a daemon for flower in Ubuntu 16.04. Though I believe the set up won't be much different for other distributions.

  1. Create a systemd configuration file called, for example, flower.service. In my case, it is located in /etc/systemd/system folder. It should contain:

    [Unit]
    Description=Flower Celery Service
    
    [Service]
    User=your_user
    Group=www-data
    WorkingDirectory=/var/www/project-working-directory
    ExecStart=/home/user/miniconda3/envs/virtualenv/bin/flower --port=5555  --loglevel=info -A yourproject
    Restart=on-failure
    Type=simple
    
    [Install]
    WantedBy=multi-user.target
    

Basically, you may set all of the available options like in a terminal. By the way, you should use flower under virtual environment. Make sure that your user have privileges over a working directory.

  1. Reload systemd daemon sudo systemctl daemon-reload

  2. Start a flower daemon sudo systemctl start flower

That's all! This nice tutorial helped me get through the configuration process.

like image 179
bilbohhh Avatar answered Sep 20 '22 09:09

bilbohhh