import inspect
import logging
import threading
from logging import Logger as Logger, LogRecord from celery import Celery
from celery.signals import task_prerun, task_postrun local = threading.local()
local.task_id = "" class MyLogger(Logger):
def makeRecord(self, *args, **kwargs) -> LogRecord:
rv = super().makeRecord(*args, **kwargs)
rv.task_id = local.task_id
return rv logging.Logger.manager.loggerClass = MyLogger app = Celery()
app.conf.update(
CELERYD_LOG_FORMAT="[%(asctime)s: %(levelname)s/%(processName)s %(task_id)s %(filename)s:%(lineno)d ] %(message)s"
) @task_prerun.connect
def set_task_id(task_id, task, *args, **kwargs):
local.task_id = task_id @task_postrun.connect
def rm_task_id(task_id, task, *args, **kwargs):
local.task_id = "" @app.task
def add(x, y):
stack = inspect.stack()
f_locals = stack[1].frame.f_locals
print(f'{getattr(f_locals.get("req", object()), "id", "noid")}')
return x + y if __name__ == '__main__':
app.worker_main()

Celery Worker log 中记录 task_id的更多相关文章

  1. 在nginx日志的access log中记录post请求的参数值

    背景:有时程序偶出现参数少了或没有提交到下一个链接Url里后出现问题,如何查呢,最好的办法是在nginx上的加post参数,以定位到问题才有可能对某个UIR的代码出现的问题进行排查. og_forma ...

  2. supervisor 启动 celery 及启动中的问题

    一.前言 本教程重点在于supervisor的配置过程,celery的安装配置请参考其他教程 二.安装supervisor 1.安装命令 pip install supervisor # superv ...

  3. 在SystemOut.log中发现HMGR0152W: 检测到CPU 饥饿的消息 <转载>

    今天系统报警了!!!!!顿时人又不好了!!!查看系统日志, 报错如下: Did not receive adequate CPU time slice. Last known CPU usage ti ...

  4. 谁记录了mysql error log中的超长信息

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  5. 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  6. celery+Rabbit MQ实战记录

    基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...

  7. celery的log如何传递给django,由django管理

    celery自己管理log目录 celery worker --autoscale=4,1 --app=erebus.celeryapp:app -l info -f /home/admin/outp ...

  8. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  9. celery在Django中的集成使用

    继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...

  10. 自动统计安卓log中Anr,Crash,Singnal出现数量的Python脚本

    作为测试,在测试工作中一定会经常抓log,有时log收集时间很长,导致log很大,可能达到几G,想找到能打开如此大的log文件的工具都会变得困难:即使log不大时,我们可以直接把log发给开发同学去分 ...

随机推荐

  1. 题解 | CF1328F. Make k Equal (思维,前缀 & 后缀和)

    题目链接:Here 题意:把 \(n\) 个数变成 \(k\) 个相同的数,每次可以把 \(n\) 个数里最大的 \(-1\) 或最小的 \(+1\) ,问最小改变次数 思路: 我们可以枚举,把 \( ...

  2. 2019年第十届蓝桥杯国赛C++B组

    部分题目示意图来自网络,所以会带水印 最后编辑时间: 2021年5月12日 统一声明 如果不写默认带有常用头文件 如果不表明主函数默认表示在 void solve(){} 默认使用 using nam ...

  3. C++ bitset的简单使用

    bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit. bitset 的大小在定义使就需要确定.如果想要不定长的 bitset,就需要使用 vec ...

  4. java进阶(15)--DecimalFormat、BigDecimal

    一.DecimalFormat(数字格式化) 1.数字格式化的表示: (#) 代表任意数字 (,)代表千分位 (.)代表小数 (0)代表不够时补0 2.示例

  5. zipkin 与 sleuth 实现链路追踪

    本文为博主原创,转载请注明出处 1.Zipkin 与 Sleuth 简介 zipkin 的官网地址: https://zipkin.io/ Zipkin 和 Sleuth 都是由 Twitter 开源 ...

  6. Angular系列教程之自定义指令

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. PS去除PDF中的WPS 编辑试用水印

    1. 问题 自己的学习资料.pdf被添加上了相关水印,导致阅读起来很不舒服 2. 解决方式(适用于白底黑字的pdf资料,去除水印) 2.1 初始图片如下: 2.2 打开PS,选择菜单栏中选择一项中的色 ...

  8. 在Winform系统开发中,使用MediatR来实现类似事件总线的消息处理

    MediatR是一款进程内的消息订阅.发布框架,可实现请求/响应.命令.查询.通知和事件的消息传递,解耦了消息处理器和消息之间耦合.提供了Send方法用于发布到单个处理程序.Publish方法发布到多 ...

  9. Oracle 不同字符集复合索引长度验证

    Oracle 不同字符集复合索引长度验证 背景 前段时间同事找到一个参数, 可以解决Oracle的char和byte 模式存储超长的问题. 很大程度上解决了研发修改SQL的工作量. 但是发现在某些字符 ...

  10. [转帖]Shell编程规范与变量

    目录 一.Shell的概念 Shell脚本的概念 Shell脚本应用场景 二.Shell的作用 Shell脚本种类 shell脚本的作用 Shell脚本的构成 Shell脚本的构成 二.编写Shell ...