Celery + custom backend

2023-11-02

custom backend

以redis为例, 本质是用自定义的backend替换RedisBackend.
https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html
celery的组件耦合低, 替换简单, 但是需要注意入参值

code

  1. 保存下面代码到 test.py
  2. 替换redis url 参数
  3. 运行 python test.py
import arrow
from celery import Celery
from celery.backends.redis import RedisBackend
from celery.schedules import crontab

broker_url = 'redis://:123@139.196.213.1:6379/1'
backend_url = 'redis://:123@139.196.1.108:6379/2'


class CustomRedisBackend(RedisBackend):
    task_keyprefix = 'cronjob'

    def __init__(self, app=None, **kwargs):
        kwargs['host'] = kwargs.get("url") or backend_url
        kwargs['app'] = app
        super().__init__(**kwargs)

    def get_key_for_task(self, task_id, key=''):
        """
        overwrite cache key
        """
        key_t = self.key_t
        return key_t('_').join([
            self.task_keyprefix, key_t(task_id)[:9], key_t(key),
        ])


_app = Celery(
    'hello',
    broker='redis://:Pass123456@139.196.213.108:6379/1',
)

_app.conf.update(
    result_backend='test2.CustomRedisBackend',
)


@_app.task
def my_cronjob(arg1):
    # Code for your periodic task goes here
    print("Executing periodic task")
    return f"my_periodic_task: {str(arrow.now())}, arg {str(arg1)}"


@_app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    sender.add_periodic_task(crontab(minute='*'), my_cronjob.s(1))


if __name__ == '__main__':
    # celery -A app beat --loglevel=info
    _app.worker_main(['worker', '-B'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Celery + custom backend 的相关文章

随机推荐

  • Vue刷新浏览器后重定向到首页或者某一个页面

    记录一下项目需要的一些小优化 刷新浏览器时回到首页 一般来说vue项目刷新浏览器之后还会继续跳动刷新之前的页面 我们只需要要App vue中的created方法中添加相关判断即可 这里的 index可以换成具体需要跳转的页面 具体代码如下
  • [深度学习] Relu层作用

    为什么引入非线性激励函数 如果不用激励函数 在这种情况下你每一层输出都是上层输入的线性函数 很容易验证 无论你有多少层神经网络 输出的都是输入的线性组合 激活函数是用来加入非线性因素的 因为线性模型的表达能力不够 以下 同种颜色为同类数据
  • 如何删除 MySQL ⽤户

    1 登录MySQL数据库 登录MySQL数据库 可以使 以下命令 mysql u 户名 p 2 查看当前 户 使 以下命令查看当前所有 户 ysql user 3 删除 户 在MySQL数据库中 删除 户需要使 DROP USER命令 以下
  • Python快速搭建HTTP服务

    欢迎关注 无量测试之道 公众号 回复 领取资源 Python编程学习资源干货 Python Appium框架APP的UI自动化 Python Selenium框架Web的UI自动化 Python Unittest框架API自动化 资源和代码
  • Tomcat 启动时,/logs/catalina.out: No such file or directory

    如果报这个错请查看是不是Tomcat包下载错了 注意 要下载Core 中的tar gz 如果Tomcat包正确请继续往下看解决方案 解决方案 touch cannot touch opt apache tomcat 7 0 93 src l
  • android动态设置maxheight,android - 如何在TextInputLayout上设置maxHeight - 堆栈内存溢出...

    我不想限制行数 我想限制TextInputLayout最大高度 这样 如果它太长 它将变为垂直滚动 我很好的代码解决方案 当前maxHeight属性对TextInputLayout或EditText无效 这是我的布局 xmlns app h
  • GB28181 对接海康平台,解决音视频卡顿问题

    GB28181 对接海康平台 解决音视频卡顿问题 一 概述 二 问题分析 1 设备对比分析 2 抓包对比分析 3 验证分析结果 三 总结 四 讨论 一 概述 设备使用GB28181协议对接海康平台时 发现音频和视频存在卡顿现象 不是一直卡顿
  • 程序分层领域模型规约中各种实体类命名(DO、BO、DTO、VO)的意义

    仅做参考 DO Data Object 与数据库表结构一一对应 通过DAO层向上传输数据源对象 DTO Data Transfer Object 数据传输对象 Service或Manager向外传输的对象 BO Business Objec
  • 期货开户一心一意坚持到底

    只有真正了解了自己的性格 那么离寻觅到适合自己性格的交易法则也就不远了 只有专注 一心一意的做某件事情 才能做到无困无惑 如果三心二心 那么最终只会一事无成 大道至简 坦然面对自己人性的弱点 才能做到交易简单 生活快乐 其实一时的坚持非感觉
  • npm run build:prod报错:events.js:291 throw er; // Unhandled ‘error‘ event处理办法

    解决办法 1 CTRL R输入cmd 2 在命令行输入 netstat ano findstr 8080 3 找到占用的PID号 进行查找 tasklist findstr 16504 4 CTRL SHIFT DELETE打开任务管理器
  • Qt: error: C2001: 常量中有换行符

    这里简单记录在使用Qt Creator时遇到的一个问题 如下一行代码 没有任何问题 但编译运行时会报错 label gt setText label 我是一个窗口 当使用中文时 可能会习惯性的使用QObject tr 函数 label gt
  • 文件查重FindDupFile

    finddupfile是网上用的比较多的一款绿色查重软件 具体步骤请参考以下 1 下载软件 可从网上下载该软件 或者从以下地址进行下载 本软件从网上可自行下载 下载链接 https pan baidu com s 1KDJ9U4U 8HQa
  • 数学分析闭区间套定理_什么是区间套定理?

    什么是闭区间 数轴上任意两点和这两点间所有点组成的线段为一个闭区间 闭区间套定理 有无穷个闭区间 第二个闭区间被包含在第一个区间内部 第三个被包含在第二个内部 以此类推 后一个线段会被包含在前一个线段里面 这些区间的长度组成一个无穷数列 如
  • FineReportV10.0入门

    第三章 报表属性设计基础 第三课层次坐标 常用公式
  • gitlab CI/CD自动化部署

    文章目录 1 gitlab Runner 1 1 安装gitlab Runner 1 2 注册runner 2 gitlab ci yml的书写 3 部署 3 1 docker方式部署 3 2 OSS部署 CI CD 是一种持续开发软件的方
  • 针对QT——“在程序文件中(*ui,*cpp,*h)更改之后编译运行的程序结果无法更新”——解决方案

    本篇文章主要介绍在QT中 对程序文件 ui cpp h 更改之后编译运行的程序结果却无法更新的解决方案 问题描述 在设计QT的GUI用户界面时 我们需要不断对程序文件进行修改以优化用户体验 因此需要更新程序的生成文件 实际经历 笔者最近在一
  • IntelliJ Spring Configuration Check

    用IntelliJ 导入现有工程时 如果原来的工程中有spring 每次打开工程就会提示 Spring Configuration Check 开始不知道怎么回事 但工程不影响 首先到工程设置界面 工程设置 Project Structur
  • 1-APP启动源码分析-1

    桌面app也就是我们认识的launcher app 点击app icon启动到app内部的过程分为2种情况 一种是冷启动 一种叫热启动 冷启动 系统没有创建过app的进程 也就是后台没有此app进程 所以冷启动系统会创建一个新的进程分配给a
  • 高效阅读嵌入式源码系列一:静态分析神器understand软件基本操作

    系列文章目录 高效阅读嵌入式源码系列一 静态分析神器understand软件基本操作 高效阅读嵌入式源码系列二 understand阅读linux uboot等源码 高效阅读嵌入式源码系列三 understand阅读经keil MDK编译的
  • Celery + custom backend

    custom backend 以redis为例 本质是用自定义的backend替换RedisBackend https docs celeryq dev en stable getting started backends and brok