1

I am trying to start celery worker and celery beat on startup. celery worker to start with.

using ubuntu 20.04, redis, celery, python 3.8.10, django 4.0.7, virtual env

  1. Followed the link to install redis and secure with password (using requirepass foobared) and disabled dangerous commands https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-20-04

  2. now to automate the celery worker start on boot following the link Celery: Start Worker Automatically (on boot) ("worker" is the sudo user, Virutal env is at "/home/worker/Fusion/envFCorp")

my /etc/default/celeryd looks like this

#Where your Celery is present
CELERY_BIN="/home/worker/Fusion/envFCorp/bin/celery"

# App instance to use 
CELERY_APP="app.celery"
#CELERY_APP="FusionCorp"

# Where to chdir at start
CELERYD_CHDIR="/home/worker/Fusion/FusionCorp/FusionCorp/"

# Extra command-line arguments to the worker 
CELERYD_OPTS="--time-limit=300 --concurrency=8"

# %n will be replaced with the first part of the nodename. 
CELERYD_LOG_FILE="/var/log/celery/%n%I.log" 
CELERYD_PID_FILE="/var/run/celery/%n.pid"


# Workers should run as an unprivileged user.
# You need to create this user manually (or you can choose
# A user/group combination that already exists (e.g., nobody). 
CELERYD_USER="celery" 
CELERYD_GROUP="celery"

# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured. 
CELERY_CREATE_DIRS=1
export SECRET_KEY="MYSECRETPASSWORD"
  1. redis-cli ping and pong is working good

  2. (envFCorp) worker@server:~/Fusion$ sudo systemctl enable redis

    Failed to enable unit: Refusing to operate on alias name or linked unit file: redis.service

  3. I am able to run celery worker and also able to schedule with beat manually if requirepass is off else it start giving error

    celery -A FusionCorp worker --loglevel=info --pool=gevent --concurrency=10

celery -A FusionCorp.celery beat

Now after activating the Virtual Environment

(envFCorp) worker@server:~/Fusion$ sudo /etc/init.d/celeryd start
celery init v10.1.
Using config script: /etc/default/celeryd
(envFCorp) worker@server:~/Fusion$ sudo /etc/init.d/celeryd status
celery init v10.1.
Using config script: /etc/default/celeryd
celeryd down: no pidfiles found

Please suggest how do i automate to start my celery worker and beat on start up. Please note i see error in step 3).

also tried using supervisor to automate but without luck

Thanks

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.