【问题标题】:Not record celery task parameter in djcelery不在 djcelery 中记录 celery 任务参数
【发布时间】:2016-08-12 13:28:21
【问题描述】:

我使用 django + celery + python + djcelery + Flower 进行开发。在django看来。我做了类似的事情:

def handle(req):
   task_name.apply_async(args=(req.POST['username'], req.POST['password'], 'p1', 'p2'), queue='x')

一切正常。

但是当我检查芹菜花时,我发现用户名/密码在那里。当我在 django admin 中检查 djcelery 时,用户名/密码也在那里。

所以我的问题是:

  1. 我们能不能把参数只放在内存中,让别人看不到 他们?
  2. 我想清除现有的任务日志,可以吗?

更新:

我认为 args 是由 djcelery 捕获的,因为我发现这些数据存储在 djcelery_taskstate 中。

更新:

  • Djcelery 使用 celerycam 捕获这些信息并将它们存储在后端并在 django admin 中显示。
  • 花,我认为,使用一些类似的方法来捕获这些信息并在花页中显示它们。但是下面的方法可以防止花捕获一些敏感数据。 http://flower.readthedocs.org/en/latest/config.html#format-task
  • 我仍然没有找到禁用 celerycam 捕获这些数据的方法..

更新:

最后,我用 mysql 触发器修复了 celerycam。每当它将密码存储到数据库中时,我都会使用触发器来擦除密码

谢谢

【问题讨论】:

    标签: python django passwords celery djcelery


    【解决方案1】:

    我不确定如何从花屏中删除用户名和密码,但是如果您想删除或清除正在显示的任务,那么您可以继续并重新启动花。

    花中所有现有\已完成的任务将从列表中消失。

    【讨论】:

    • 谢谢,这确实有效!但我仍然需要一个不会记录 args 的解决方案。顺便说一句,我发现这可能对其他人有帮助。 docs.celeryproject.org/en/2.1-archived/reference/…
    • 您可以尝试将这些参数从 args(或 kwargs)和函数参数中转移。我只能在花仪表板中看到 kwargs 和 args。
    • 对不起,我听不懂你的意思。你的意思是改变调用芹菜任务的方式吗?如果是这样,你能举个例子吗?就我而言,花抓住了参数,并展示出来。这不是我想要的。
    • 所以不要像这样传递参数:task_name.apply_async(args=(req.POST['username'], req.POST['password'], 'p1', 'p2'), queue='x') 按如下方式传递它们: task_name.apply_async(req.POST['username'], req.POST['password'], args=('p1', 'p2'), queue='x' )
    • hi Mighty:我发现以下方法可以解决这个问题。 flower.readthedocs.org/en/latest/config.html#format-task
    猜你喜欢
    • 2012-02-16
    • 2020-08-04
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多