将多个Celery定时任务添加到Systemd

一、设置python celery项目的配置

  1. 在/etc/conf.d/目录下复制之前的celery配置文件(第一个定时任务的celery配置),修改文件名为celery_demo(与已有的不重复),修改配置
 # work_demo
CELERYD_NODES="work_demo"
# or we could have three nodes:
#CELERYD_NODES="w1 w2 w3"
# Celery
CELERY_BIN="/usr/local/bin/celery"
#CELERY_BIN="/virtualenvs/def/bin/celery"
# App instance to use
# comment out this line if you don't use an app
# Celeryconfig.py
CELERY_APP="demo"
# or fully qualified:
#CELERY_APP="main.tasks:app"
# How to call manage.py
CELERYD_MULTI="multi"
# 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.
# - %I will be replaced with the current child process index
# and is important when using the prefork pool to avoid race conditions.
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_LOG_LEVEL="INFO"
  1. 配置项修改
    CELERYD_NODES=“work_demo”,启动的celery进程的进程名,重新定义一个进程名,与已有的不重复
    CELERY_APP=“demo”,要与定时任务配置文件config.py中创建celery对象的命名保持一致
# config.py中创建celery对象时的命名
app = Celery('demo', broker='amqp://guest@localhost//')

二、设置systemd配置

  1. 在/etc/systemd/system/目录下复制之前celery.service文件,重新定义一个文件名celery_demo.service
[Unit]
Description=Celery demo Service
After=network.target
[Service]
Type=forking
# User=root
User=celery
# Group=root
Group=celery
EnvironmentFile=/etc/conf.d/celery_demo
WorkingDirectory=/root/event_crontab
ExecStart=/usr/local/bin/celery multi start work_demo -A main -Q
queue_demo -l info -B --logfile=crontablog.log
ExecStop=/usr/local/bin/celery multi stop work_demo -A main -Q
queue_demo -l info -B --logfile=crontablog.log
ExecReload=/usr/local/bin/celery multi restart work_demo -A main -Q
queue_demo -l info -B --logfile=crontablog.log
[Install]
WantedBy=multi-user.target
  1. 配置项修改
    [Unit]
    Description:当前服务的简单描述,可以通过不同的描述来区分不同的Celery任务,也可以不修改
    [Service]
    Type:定义启动类型,forking表示以fork()方式启动
    User:指定启动任务的用户
    Group:指定用户的组
    EnvironmentFile:指定当前celery项目的systemd配置文件(上面编写的配置文件):每个celery项目的配置文件都不同,要一一对应
    WorkingDirectory:指定celery项目的启动目录,项目启动文件main.py所在目录,这个目录要根据celery项目的启动入口main.py的绝对路劲来定
    ExecStart:在执行systemctl start celery_demo.service命令时,会执行ExecStart,将当前项目的启动命令作为ExecStart的值
    ExecStop:在执行systemctl stop celery_demo.service命令时,会执行ExecStop,将当前项目的停止命令作为ExecStop的值
    ExecReload:在执行systemctl restart celery_demo.service命令时,会执行ExecReload,将当前项目的重启命令作为ExecReload的值
    [Install]
    WantedBy=multi-user.target:表示重启系统后自动启动celery_demo.service

三、使用systemd运行celery_demo.service,所有命令与第一次配置相同,只是指定的配置文件名不同

  1. 重载配置文件
    每次修改celery_demo.service配置后都要执行命令,以便systemd确认该文件
    systemctl daemon-reload
  2. 启动命令
    systemctl start celery_demo.service
  3. 停止命令
    systemctl stop celery_demo.service
  4. 重启命令
    systemctl restart celery_demo.service
  5. 查看celery.service的运行状态
    systemctl status celery_demo.service

四、横向扩展
后续只要有新的Celery定时任务,都可以重复以上方法将定时任务添加到systemd中,各项目的定时任务互不影响
可以通过命令查看当前运行的celery进程有哪些,看有几个项目的定时任务正在运行

ps -aux | grep celery

将多个Celery定时任务添加到Systemd相关推荐

  1. Celery 动态添加定时任务生产实践

    一.背景 实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本 通过celery 实现调度主要思想是 通过引入中间人redis,启动 worker 进行任务执行 ,c ...

  2. Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  3. Bamboo Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-82 from celery.task.sched ...

  4. Celery定时任务异步任务

    celery定时任务 Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务( async task )和定时任务( ...

  5. celery定时任务简单使用

    celery介绍 Celery 是一个强大的分布式任务队列,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务( async task )和定时任务( cr ...

  6. Celery定时任务

    本文简述Celery定时任务,每天6点向指定邮箱发送笑话和一套斗图 知识点: 简单爬虫 发送邮件 Celery定时任务 本项目 github : https://github.com/TimeAsho ...

  7. linux centos 7定时任务添加,CentOS 7 cron服务 定时任务使用方法

    CentOS 7 cron服务 定时任务使用方法 cron服务是Linux内置服务,默认不会开机自动启动.可用以下命令启动和停止服务,也可以设置成开机启动: systemctl start crond ...

  8. python celery定时任务_Celery(四)定时任务

    要定时或者周期性的执行任务,可以使用linux的crontab.Celery也提供了类似的Periodic Tasks功能. Celery beat Celery使用celery beat作为任务调度 ...

  9. linux 如何定时任务添加,linux下添加定时任务。

    这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...

最新文章

  1. 数据库系统概论:第十一章 并发控制
  2. 《C和指针》——声明数组参数
  3. [MySql]默认密码的查找与修改
  4. 13. CSS 链接
  5. PM981/PM981a安装黑苹果-VM Ware教程
  6. win10家庭中文版安装win7虚拟机
  7. 豆瓣电影top250
  8. linux xp双系统引导修复工具,Ubuntu与XP双系统引导修复备忘
  9. zigbee Zstack 中串口操作的深度解析、一
  10. 自学Java年薪20万的学习方法,大佬教你如何去学
  11. html段前段间距设置,Word里标题段前距设置不管用,段后管用
  12. 华为总裁办紧急发文!两个鸿蒙别傻傻分不清!
  13. valgrind使用整理
  14. REFERENCE MADE TO UNRESOLVED EXTERNAL.
  15. PAD的EDGE插件的坑
  16. 2022 ICPC 亚洲区域赛(杭州)赛后总结
  17. Python数据分析中的数据预处理:数据标准化
  18. 必应(Bing)每日图片获取API
  19. 本地服务注册不上nacos_SpringCloud War 包部署导致服务未正常注册到 Nacos 问题
  20. win10任务管理器快捷键_Win10全新任务管理器上线:专为PC游戏优化-Windows 10,微软,PC游戏 ——快科技(驱动之家旗下媒体)-...

热门文章

  1. 设置windows网络连接别名和linux网络连接别名
  2. filebeat 配置文件详解
  3. python执行shell命令
  4. Tomcat配置多个Service,多个同名的应用运行在一个tomcat下
  5. Android中ScrollView嵌套WebView
  6. 容器编排技术 -- Kubernetes kubectl rollout resume 命令详解
  7. centos oracle sqlplus,centos 下oracle sqlplus乱码问题解决
  8. Linux(服务器编程):25---epoll复用技术实现统一处理信号事件源
  9. C语言 结构体的初次运用
  10. 【CSS】常用特效字