Size: a a a

2020 April 07

V

Viktor in Python KZ
Viktor
В этой задаче меня смущает, что при итерировании по шаблону ({% for item in items %}) не меняется значение {{ None | next_id }}, которое должен возвращать генератор (если бы на самом деле вызывался). Как буд-то бы имеет место такое-то кеширование результата от аргумента. (Раз на вход всё равно подаётся неизменное None, зачем дёргать функцию дишний раз.)

Пойду проверю эту гипотезу..
Гипотеза подтверждается. Если в функцию передавать например loop.index, то и генератор дёргается, и порядок вызовов меняется
источник

V

Viktor in Python KZ
Случай 1 (как в задаче)
Вызов:
{{ None | next_id }}
Результат:
B
Channels:
 - A: Foobar item
 - A: Foobaz item  
C


Случай 2
Вызов:
{{ loop.index | next_id }}
Результат:
A
Channels:
 - B: Foobar item
 - C: Foobaz item  
D
источник

V

Viktor in Python KZ
Не могу сделать предположение о наблюдаемом результате.. Под капот лезть не хочется... Вроде это решение (костыльное весьма)
источник

RJ

Rus Jr in Python KZ
а почему нельзя заранее нагенерить и соединить данные в питоне и в шаблон передать один итератор?
источник

V

Viktor in Python KZ
Rus Jr
а почему нельзя заранее нагенерить и соединить данные в питоне и в шаблон передать один итератор?
Ответ в вашем вопросе - нужно изменять входные данные. И да, в прототипе тут так и было сделано, к каждому элементу входных данных добавлялся индекс, а потом уже изменённые данные подавались на вход джиндже.

Ничего страшного, но одни и те же данные итерируются дважды.
источник

RJ

Rus Jr in Python KZ
вопрос производительности?
источник

V

Viktor in Python KZ
Rus Jr
вопрос производительности?
В моём случае так сказать не могу. Объёмы не те (шаблоны для графаны)
источник

V

Viktor in Python KZ
Но при большом входном потоке - да. увеличение будет раза в 2
источник

RJ

Rus Jr in Python KZ
как на счет решений в стиле template.render(items=(next_id() for i in items))
источник

RJ

Rus Jr in Python KZ
итерируемся один раз при вызове в шаблоне
источник

V

Viktor in Python KZ
Хм, как-то не приходило такое. Чуть позже попробую
источник

MM

Meir M in Python KZ
всем привет,
источник

MM

Meir M in Python KZ
столкнулся с проблемой, как правильно совместить рекурсию и celery task
источник

MM

Meir M in Python KZ
мне нужно вызвать таск и в нем проверять статус данных со стороннего сервака каждые 5 секунд
источник

SA

Sultan Abilda in Python KZ
А при чем тут рекурсия?
источник

SA

Sultan Abilda in Python KZ
Тебе скорее всего просто нужно periodic task создать
источник

MM

Meir M in Python KZ
ну я вызываю эту функцию при сигнале
источник

MM

Meir M in Python KZ
post save
источник

MM

Meir M in Python KZ
и если статус с in process меняется на другой то делаю апдейт
источник

SA

Sultan Abilda in Python KZ
Думаю это очень плохая идея
источник