[Celery]Run celery as daemon

本文档基于celeryd systemd配置和celery守护进程设置的指导。我们将学习如何将celery配置为守护进程运行,包括创建配置文件、systemd服务文件,并确保日志和PID文件的目录存在并可写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

This HOWTO is based on instructions provided at celeryd systemd configure and celery in daemon

In my previous HOWTO, we’ve configured celery and are able to run it using celery -A proj worker -l info manually. But in many case, you’d want to run it as daemon. Now let’s start to work.

NOTE:
I’m using another project in this article, please make changes accordingly.

Create a configuration file for celery daemon

My configuration file is /NewHorizons/celery.conf

CELERY_APP="NewHorizons"
# Name of nodes to start, here we have a single node
CELERYD_NODES="w1"

# Where to chdir at start.
CELERYD_CHDIR="/NewHorizons"

# Python interpreter from environment, if using virtualenv
ENV_PYTHON="/usr/local/bin/python2.7"

# How to call "manage.py celeryd_multi"
CELERYD_MULTI="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryd_multi"

# How to call "manage.py celeryctl"
CELERYCTL="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryctl"

# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8"

# Name of the celery config module, don't change this.
CELERY_CONFIG_MODULE="celeryconfig"

# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_LEVEL="INFO"

# Workers should run as an unprivileged user.
CELERYD_USER="web"
CELERYD_GROUP="web"

# Set any other env vars here too!
#PROJET_ENV="PRODUCTION"

# Name of the projects settings module.
# in this case is just settings and not the full path because it will change the dir to
# the project folder first.
#export DJANGO_SETTINGS_MODULE="settings"

Create systemd service file

My service file is /usr/lib/systemd/system/celery.service

[Unit]
Description=Celery workers
After=network.target

[Service]
Type=forking
User=web
Group=web
EnvironmentFile=-/NewHorizons/celery.conf
# **if you are using other environment files, for example, you configure you django.settings to read from env, include these files too**
EnvironmentFile=-/LOCATION_OF_YOUR_ENV_FILE
WorkingDirectory=/NewHorizons
# run ExecStartPre as priviledged user and set up /var/run
PermissionsStartOnly=true
ExecStartPre=/usr/bin/mkdir -p /var/run/celery
ExecStartPre=/usr/bin/chown web:web /var/run/celery
ExecStart=/usr/local/bin/celery multi start $CELERYD_NODES \
    -A $CELERY_APP --pidfile=${CELERYD_PID_FILE} \
    --logfile=${CELERYD_LOG_FILE} --loglevel="${CELERYD_LOG_LEVEL}" \
    $CELERYD_OPTS
ExecStop=/usr/local/bin/celery multi stopwait $CELERYD_NODES \
    --pidfile=${CELERYD_PID_FILE}
ExecReload=/usr/local/bin/celery multi restart $CELERYD_NODES \
    -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
    --logfile=${CELERYD_LOG_FILE} --loglevel="${CELERYD_LOG_LEVEL}" \
    $CELERYD_OPTS

[Install]
WantedBy=multi-user.target

Make directories for log and pid file

According to what you specified in your celery.conf, you should make sure the directories for CELERYD_LOG_FILE and CELERYD_PID_FILE exists before starting celery.service

As root, run

mkdir /var/log/celery
mkdir /var/run/celery

Also make sure the User and Group you specified in celery.service have the permission to write to the above directories.

As root, run

chown web:web /var/log/celery
chown web:web /var/run/celery

Now we can verify whether celery.service can be started.

systemctl start celery.service
systemctl status celery.service
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
我想将frontend 也是用volumes,将其映射到/app/frontend目录,在/app/frontend下install以及build,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件 FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值