python测试开发django之使用supervisord 后台启动celery 服务(worker/beat)

使用Supervisord后台启动Celery服务(worker/beat)

前言

Django项目中通常会使用Celery来进行后台任务的处理,但如果我们直接使用命令行启动,那么当我们关闭终端或者终端断开时,Celery服务也会随之停止。为了解决这个问题,我们可以使用Supervisord来实现后台运行Celery服务的目的。

安装Supervisord

首先需要安装Supervisord,可以使用pip进行安装:

pip install supervisor

配置Supervisord

  1. 首先需要生成配置文件:
echo_supervisord_conf > /etc/supervisord.conf
  1. 接着编辑配置文件,添加以下内容(示例中的projectname请替换为你自己的项目名):
[program:worker]
command=/path/to/venv/bin/celery worker -A projectname --loglevel=info --concurrency=4 -Ofair
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-worker.log
stderr_logfile=/path/to/projectdir/logs/celery-worker-error.log

[program:beat]
command=/path/to/venv/bin/celery beat -A projectname --loglevel=info --pidfile=/tmp/celerybeat.pid
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-beat.log
stderr_logfile=/path/to/projectdir/logs/celery-beat-error.log

以上配置文件中分别配置了一个名字为worker的Celery worker和一个名字为beat的Celery beat,其中需要修改的地方主要有以下几个参数:
- command:Celery命令的具体内容,需要替换为自己项目中Celery的启动命令。
- directory:你的项目在服务器中的具体路径。
- user: 运行程序的用户,默认为root用户,需要根据自己的服务器配置修改。
- stdout_logfilestderr_logfile:输出的日志文件路径,需要替换成自己项目中的日志路径。

启动Supervisord服务

  1. 首先需要生成Supervisord service文件:
echo_supervisord_conf > /etc/systemd/system/supervisord.service
  1. 编辑Supervisord service文件:
[Unit]
Description=Supervisor daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 启动Supervisord服务:
systemctl daemon-reload
systemctl start supervisord
systemctl enable supervisord

示例说明

以下为两个使用Supervisord后台启动Celery服务的示例:

示例一

假设我们需要在Django项目中使用Celery处理异步任务,在Linux服务器上执行,我们可以按以下步骤使用Supervisord后台启动Celery worker和beat:

  1. 先使用pip安装Celery:pip install Celery
  2. 创建Django项目,并配置Celery
  3. 编写Supervisord的配置文件:
[program:worker]
command=/path/to/venv/bin/celery worker -A projectname --loglevel=info --concurrency=4 -Ofair
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-worker.log
stderr_logfile=/path/to/projectdir/logs/celery-worker-error.log

[program:beat]
command=/path/to/venv/bin/celery beat -A projectname --loglevel=info --pidfile=/tmp/celerybeat.pid
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-beat.log
stderr_logfile=/path/to/projectdir/logs/celery-beat-error.log
  1. 保存文件并重启Supervisord服务:systemctl restart supervisord
  2. 通过Supervisord的Web管理界面查看worker和beat的状态:http://服务器IP地址:9001

示例二

假设我们已经有了一个运行在Linux服务器上的Django项目,并且已经配置了Celery处理异步任务,我们可以按以下步骤使用Supervisord后台启动Celery worker和beat:

  1. 先安装Supervisord:pip install supervisor
  2. 编辑Supervisord配置文件:sudo vim /etc/supervisord.conf
  3. 添加以下内容:
[program:worker]
command=/path/to/venv/bin/celery worker -A projectname --loglevel=info --concurrency=4 -Ofair
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-worker.log
stderr_logfile=/path/to/projectdir/logs/celery-worker-error.log

[program:beat]
command=/path/to/venv/bin/celery beat -A projectname --loglevel=info --pidfile=/tmp/celerybeat.pid
directory=/path/to/projectdir
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/projectdir/logs/celery-beat.log
stderr_logfile=/path/to/projectdir/logs/celery-beat-error.log
  1. 保存文件并重启Supervisord服务:systemctl restart supervisord
  2. 通过Supervisord的Web管理界面查看worker和beat的状态:http://服务器IP地址:9001

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python测试开发django之使用supervisord 后台启动celery 服务(worker/beat) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Android使用OKHttp库实现视频文件的上传到服务器功能

    下面我会详细讲解使用OKHttp库实现视频文件上传到服务器的步骤。 1. 引入OKHttp库 首先,在项目中引入OKHttp库,可以通过在build.gradle文件中添加以下代码: dependencies { implementation ‘com.squareup.okhttp3:okhttp:4.9.1’ } 2. 创建请求体 上传视频文件需要将视频…

    人工智能概论 2023年5月25日
    00
  • nginx+tomcat实现Windows系统下的负载均衡搭建教程

    下面是“nginx+tomcat实现Windows系统下的负载均衡搭建教程”的完整攻略: 1. 环境准备 1.1 安装Java环境 首先需要安装Java环境,这里以JDK 8为例。建议在官网下载对应系统的JDK安装包,然后安装即可。 1.2 安装Tomcat Tomcat是一个开源的Web应用服务器,也是一个Servlet容器。可以通过以下步骤进行安装: 下…

    人工智能概览 2023年5月25日
    00
  • 一个基于flask的web应用诞生 用户注册功能开发(5)

    本文将详细讲解“一个基于flask的web应用诞生 用户注册功能开发(5)”的完整攻略,主要以代码示例的方式展示开发过程。 一、更新注册表单的模板 首先我们需要更新注册表单的模板,使其能够显示用户名和密码的错误信息。在templates/register.html中,添加以下代码: {% extends ‘base.html’ %} {% block con…

    人工智能概论 2023年5月25日
    00
  • Nodejs 识别图片类型的方法

    Nodejs 识别图片类型的方法 在 Node.js 中,我们可以使用第三方包 file-type 来识别图片类型,它提供了一个简单的 API 来帮助我们快速判断文件类型。 安装 可以通过 npm 安装: npm install file-type 使用 在使用 file-type 之前,需要确保你已经将图片的文件内容读取到了内存中,如果你只有图片的文件名,…

    人工智能概论 2023年5月25日
    00
  • 使用SpringAOP获取用户操作日志入库

    使用SpringAOP获取用户操作日志入库是一个常见的场景,可以通过AOP的方式实现,在用户操作某个方法时自动记录用户的操作日志,并将日志写入数据库中,方便后续的查询和分析。以下是实现该功能的完整攻略: 1. 配置依赖库 首先,需要在pom.xml中配置依赖库,包括Spring AOP和Mybatis等库。示例代码如下: <dependency>…

    人工智能概览 2023年5月25日
    00
  • 深入学习spring cloud gateway 限流熔断

    深入学习Spring Cloud Gateway 限流熔断攻略 什么是Spring Cloud Gateway Spring Cloud Gateway是一个构建在Spring Framework 5,Project Reactor和Spring Boot 2之上的网关,可以作为所有基于HTTP路由的API的入口点。它提供了一种简单而有效的方式来传递客户端请…

    人工智能概览 2023年5月25日
    00
  • Tensorflow 实现将图像与标签数据转化为tfRecord文件

    将图像与标签数据转化为 tfRecord 格式的文件是一个常见的操作,可以方便模型在训练、测试和预测时读取数据,加快数据的处理速度。Tensorflow 提供了丰富的 API 支持将图像与标签数据转化为 tfRecord 文件。以下是实现的完整攻略: 1. 安装 Tensorflow 首先需要安装 Tensorflow。可以通过 pip 安装最新的 Tens…

    人工智能概论 2023年5月25日
    00
  • 使用python进行图片的文字识别详细代码

    下面是使用 Python 进行图片的文字识别的完整攻略。 简介 文字识别(OCR,Optical Character Recognition)是一项将图片中的文字转化为计算机可处理的文本的技术。在信息处理、自动文档分类、数据挖掘等领域都有广泛的应用。目前,OCR 技术已经相当成熟,并且在商用软件中得到了广泛的应用,有很多免费或开源的 OCR 库供大家使用,比…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部