Не записывать параметр задачи сельдерея в djcelery

Я использовал django + celery + python + djcelery + flower для своей разработки. С точки зрения Джанго. Я сделал что-то вроде:

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

все работает хорошо.

Но когда я проверил цветок сельдерея, я обнаружил, что имя пользователя/пароль там. когда я проверяю djcelery в django admin, имя пользователя/пароль тоже там.

Итак, мой вопрос:

  1. мы можем сделать параметр просто в памяти, чтобы никто не мог их видеть?
  2. Я хочу очистить существующий журнал задач в цветке, могу ли я?

Обновлять:

Я думаю, что аргументы захвачены djcelery, поскольку я обнаружил, что эти данные хранятся в djcelery_taskstate.

Обновлять:

  • Djcelery использует celerycam для захвата этой информации, сохранения ее в бэкэнде и отображения в админке django.
  • Цветок, я думаю, использует аналогичный метод, чтобы захватить эту информацию и показать ее на странице цветка. Но следующий способ может помешать цветку захватить некоторые конфиденциальные данные. http://flower.readthedocs.org/en/latest/config.html#format-task
  • Я до сих пор не нашел способ отключить celerycam для захвата этих данных.

Обновлять:

наконец, я исправляю celerycam с помощью триггера mysql. всякий раз, когда он сохраняет пароль в базе данных, я использовал триггер, чтобы стереть пароль

Спасибо


person zhihuifan    schedule 20.04.2016    source источник


Ответы (1)


Я не совсем уверен, как удалить имя пользователя и пароль с экрана цветка, но если вы хотите удалить или очистить отображаемую задачу, вы можете просто перезапустить цветок.

Все существующие\выполненные задачи в цветке исчезнут из списка.

person Avneesh    schedule 20.04.2016
comment
спасибо, это работает! но мне все еще нужно решение, чтобы аргументы не регистрировались. Кстати, я обнаружил, что это может быть полезно для других людей в этом случае. docs.celeryproject. org/en/2.1-archived/reference/ - person zhihuifan; 20.04.2016
comment
Вы можете попробовать переместить эти параметры из аргументов (или из kwargs) и параметров функции. Я вижу только kwargs и args на панели цветов. - person Avneesh; 20.04.2016
comment
извините, я не могу вас понять. Вы имеете в виду изменить способ вызова задачи сельдерея? Если да, то не могли бы вы привести пример. В моем случае цветок ловит аргументы и показывает их. это не то, чего я хочу. - person zhihuifan; 20.04.2016
comment
поэтому вместо передачи таких аргументов: task_name.apply_async(args=(req.POST['username'], req.POST['password'], 'p1', 'p2'), queue='x') передайте их следующим образом: имя_задачи.apply_async(req.POST['имя пользователя'], req.POST['пароль'], args=('p1', 'p2'), очередь='x') - person Avneesh; 20.04.2016
comment
Спасибо, Майти, я попробовал ваше предложение, но оно напрямую вызывает «TypeError». В [4]: ​​tasks.add.apply_async(args=(1,2)).get() Out[4]: 3 В [5]: tasks.add.apply_async(1, args=(2)).get () ------------------------------------------------ --------------------------- TypeError Traceback (последний последний вызов) ‹ipython-input-5-a023b58b970d› в ‹module›() ----› 1 tasks.add.apply_async(1, args=(2)).get() TypeError: apply_async() получил несколько значений для аргумента 'args' - person zhihuifan; 23.04.2016
comment
привет Могучий: я нашел следующий способ решить эту проблему. flower.readthedocs.org/en/latest/config.html#format- задача - person zhihuifan; 23.04.2016