- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Flower 来监控我的 Celery 任务。
我正在尝试更改任务的显示方式(在任务 选项卡下)以使列表看起来更“有条理”。例如显示<list (6 items)>
而不是 [1, 2, 3, ...
.
不幸的是,overriding the format_task
method有局限性:
task.args
和 task.kwargs
是字符串表示,通常被截断,而不是列表/字典task.name
之外的每个字段都转义了 HTML 获取原文args
和 kwargs
对象返回我正在使用 eval(task.args)
这样我以后就可以遍历他们的项目了。评估随机字符串对我来说看起来有点不安全,你能推荐比这样做更好的方法吗?
最佳答案
我在 format_task
中找到了获取任务参数的解决方案作为对象(列表/字典等)而不是截断的字符串表示形式。
argsrepr
和 kwargsrepr
apply_async()
的参数方法允许为任务的参数指定自定义表示。
我创建了一个自定义的 Task 类,覆盖了 delay
像这样的方法:
import json
from celery import Task
class FlowerTask(Task):
def delay(self, *args, **kwargs):
argsrepr, kwargsrepr = [], {}
for arg in args:
if isinstance(arg, bytes):
argsrepr.append("<binary content>")
elif isinstance(arg, list):
argsrepr.append("<list ({} items)>".format(len(arg)))
elif isinstance(arg, dict):
argsrepr.append("<dict ({} keys)>".format(len(arg)))
else:
# Format your args the way you prefer
for key, value in kwargs.items():
# Format your kwargs the same way as above
# if ... :
# kwargsrepr.append(...)
# Create the task
new_task = super().s(*args, **kwargs)
# Use our representations as JSON
return new_task.apply_async(
argsrepr=json.dumps(argsrepr),
kwargsrepr=json.dumps(kwargsrepr)
)
然后我使用这个类作为我使用 base
的任务的基础参数:
@shared_task(base=FlowerTask)
def test_task(*args, **kwargs):
return "OK !"
这样,任务的参数表示将存储为 JSON,之后可以将其加载到 Flower 的 format_task()
中。并将它们用作对象而不是字符串:
def format_task(task):
argsrepr = json.loads(task.args)
kwargsrepr = json.loads(task.kwargs)
if not argsrepr:
task.args = "( )"
else:
task.args = ', '.join(argsrepr)
if not kwargsrepr:
task.kwargs = "( )"
else:
task.kwargs = ', '.join(f'{key} = {value}' for key, value in kwargsrepr.items())
# [...]
这样,参数显示如下:
Args:
<list (3 items)>, <binary content>
Kwargs:
callback = <function>, items = <dict (5 items)>
关于python - Flower 中的高级任务格式化(Celery 监控),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53888127/
我们正在使用 Flower 来可视化 Celery 中的任务和工作人员。问题是我们使用亚马逊自动缩放来产生新的 worker 。因此,旧 worker 一天终止,第二天产生新 worker ,他们将自
首先,我对我提出这个问题的方式感到非常抱歉。这是我的类(class)正在进行的一次练习回顾中提出的,我不知道它真正要求什么或如何开始。问题如下: GridWorld 中的 Grid 对象具有 getN
我开始使用 celery 花进行任务监控,它的工作非常顺利。但我有一个问题,如何在花重启后“重新加载”有关受监控任务的信息?我使用 Redis 作为代理,即使在服务(或服务器)意外重启的情况下,我也需
仅询问 Celery-Flower 的数据库(即当您使用 --persisten=True --db=flower 时)是否具有特定格式?如果是,那是什么?除了花本身之外,还有其他解析器吗? 非常感谢
题目地址:https://leetcode.com/problems/flower-planting-with-no-adjacent/ 题目描述 Youhave N gardens, label
题目地址:https://leetcode.com/problems/can-place-flowers/description/ 题目描述 Suppose you have a long flo
我尝试创建一个效果视频,例如:花落。我有一个主视频(main.mp4)和一个效果视频(flower_fall.mp4)。我想制作一个将 2 个视频合并的 output.mp4 视频,结果看起来主视频是
我想用 Flower用于监视 Celery 的 HTTP API,但除了 README 中的几个示例之外,我似乎找不到任何可用 REST 方法的文档。谁能指出我正确的方向,还是阅读源代码是唯一的选择?
我们正在使用Flower以Redis作为我们项目的经纪人监视Celery的任务。 当我们使用SSL将Redis配置为代理时,在代理选项卡中,我们可以看到下一条消息: 'redis' broker is
我想要生命之花,就像这个:https://jsfiddle.net/5ak8P var canvas = document.getElementById('canvas'), context
我正在尝试创建一个方法来计算 Flower 对象的数量(顺便说一句,创建了一个名为 flower 的类),该方法返回对象 flower 数组中特定花朵的数量。 我正在使用 HashMap 将一个整数(
我正在按照 https://github.com/jorilallo/celery-flower-heroku 上的说明进行操作将 Flower celery 监控应用程序部署到 Heroku。 配置
我使用 Flower 来监控我的 Celery 任务。 我正在尝试更改任务的显示方式(在任务 选项卡下)以使列表看起来更“有条理”。例如显示而不是 [1, 2, 3, ... . 不幸的是,overr
我在使用 supervisor 启动 flower 时遇到了挑战。 我的开发环境中的以下命令在控制台上运行 celery --app=celery_conf.celeryapp flower --co
我正在尝试使用 django + celery + rabbitmq + 花,但是在我使用 pip3 下载了花之后: Collecting flower Using cached flower-0
我正在使用 RabbitMQ 3.4.1 后端运行 Celery 3.1.16,并在 Python3.4 上使用 Flower 0.7.3 来监控我的 celery 任务。我有几个任务正在运行,我可以
我已经安装了 Apache Airflow 2.1.2 版,但是当我启动工作程序时,它说它无法从flower.command 导入名称 FlowerCommand。 操作系统centos 7, pyt
我正在运行 celery 3.1.11 和 flower 0.6.0。 我有一个这样配置的 celery 应用程序; # myapp.tasks.celery.py from __future__ i
我在两台服务器上运行 celery,其中一台 redis 作为代理。 Celery 启动命令如下所示: celery multi start 2 -A app_name 花启动命令: celery f
我正在使用 redis 作为代理运行 celery 和 celery 花。一切正常启动,worker 可以从 redis 找到作业,celery worker 成功完成作业。 我遇到的问题是 cele
我是一名优秀的程序员,十分优秀!