Size: a a a

2019 November 07

АР

Александр Ремизов in Python Flask
Storm Trooper
Привет всем.

Случилась такая загвоздка.

У меня есть форма, на ней можно динамически добавлять и удалять поля.
Каждый кусок который добавляется или удаляется это день.
В каждом дне есть номер дня, метка о том выходной ли день и время работы (начало и конец).

Допустим я хочу сделать график работы 2/2.
Выставляю на форме 4 дня,
в двух отмечаю время,
в двух ставлю галочки о том, что это выходные.

Скопом получаю данные из request.form

Загвоздка получить каждый день отдельным словариком на бэке.

Получив каждый день отдельным словариком,
их можно будет отправить в сериализатор,
а после добавить в БД.

Есть какие-либо советы?

Стек:
Flask
SQLAlchemy
Marshmallow
Да, есть, не используй подход с формой с бека. Используй JS
источник

ST

Storm Trooper in Python Flask
Александр Ремизов
Да, есть, не используй подход с формой с бека. Используй JS
Подробнее пожалуйста?
На фронте и так js
источник

АР

Александр Ремизов in Python Flask
Storm Trooper
Подробнее пожалуйста?
На фронте и так js
Форма у тебя в виде словаря в JS на фронте должна быть, вот и отправляй этот словарь на бек
источник

ST

Storm Trooper in Python Flask
Александр Ремизов
Форма у тебя в виде словаря в JS на фронте должна быть, вот и отправляй этот словарь на бек
Окай, Спасибо за совет.
источник
2019 November 08

V

Vlad in Python Flask
Есть одна проблемка, celery + socketIO + postgers (sqlalchemy)

В таскере висит выполнение задачи !!каждые 10 сек!!. Воркер выполняет задачу (Обычный SELECT + отправить данные через SOCKETIO, !!запрос всегда один и тот же!!).

Пример:
def test()
  data = Data.all()
  socketIO.emit('monitor', data)

Первые часы всё работает стабильно, потом начинает приходить старая информация (старые значения), кэша никакого нет в проекте.
!!После перезапуска воркера!!, сразу начинает приходить нормальная информация. Сейчас убиваю воркера после выполнения N задач.

Ковырялся в postgers сначала, но ничего похожего там с настройками нет и кэш задаётся немного иначе. В итоге не могу понять кто виновник всего этого  (мои руки, да):(
источник

АП

Агент Печенька in Python Flask
Звучит как воркер не успевает.
источник

V

Vlad in Python Flask
Тоже сначала так думал, воткнул потом
@celery.task(expires=10, ignore_result=True, time_limit=10)
источник

V

Vlad in Python Flask
Но значения слишком старые приходят, да и задач немного (2-3 штуки, выполняются за 0,3-0,7)
источник

T

Tishka17 in Python Flask
Vlad
Есть одна проблемка, celery + socketIO + postgers (sqlalchemy)

В таскере висит выполнение задачи !!каждые 10 сек!!. Воркер выполняет задачу (Обычный SELECT + отправить данные через SOCKETIO, !!запрос всегда один и тот же!!).

Пример:
def test()
  data = Data.all()
  socketIO.emit('monitor', data)

Первые часы всё работает стабильно, потом начинает приходить старая информация (старые значения), кэша никакого нет в проекте.
!!После перезапуска воркера!!, сразу начинает приходить нормальная информация. Сейчас убиваю воркера после выполнения N задач.

Ковырялся в postgers сначала, но ничего похожего там с настройками нет и кэш задаётся немного иначе. В итоге не могу понять кто виновник всего этого  (мои руки, да):(
чую или глобальные переменные или буфер какой-то
источник

V

Vlad in Python Flask
Tishka17
чую или глобальные переменные или буфер какой-то
от глобалок я сразу отказался во всём проекте, буфера с моей стороны нету :(
источник

T

Tishka17 in Python Flask
Vlad
Есть одна проблемка, celery + socketIO + postgers (sqlalchemy)

В таскере висит выполнение задачи !!каждые 10 сек!!. Воркер выполняет задачу (Обычный SELECT + отправить данные через SOCKETIO, !!запрос всегда один и тот же!!).

Пример:
def test()
  data = Data.all()
  socketIO.emit('monitor', data)

Первые часы всё работает стабильно, потом начинает приходить старая информация (старые значения), кэша никакого нет в проекте.
!!После перезапуска воркера!!, сразу начинает приходить нормальная информация. Сейчас убиваю воркера после выполнения N задач.

Ковырялся в postgers сначала, но ничего похожего там с настройками нет и кэш задаётся немного иначе. В итоге не могу понять кто виновник всего этого  (мои руки, да):(
socketIO ты как между воркерами шаришь?
источник

V

Vlad in Python Flask
redis
источник

T

Tishka17 in Python Flask
эээ
источник

T

Tishka17 in Python Flask
socketIO - это не веб-сокет?
источник

V

Vlad in Python Flask
там в сокете есть настройка для шаринга с помощью редиса
источник

V

Vlad in Python Flask
Задача в любом случае прилетает на одного воркера, это 100%
источник

T

Tishka17 in Python Flask
чо
источник

T

Tishka17 in Python Flask
как можно с помощью хранилища текстовых блобов шарить объект питона/операционной системы?
источник

T

Tishka17 in Python Flask
Vlad
Задача в любом случае прилетает на одного воркера, это 100%
селери разве на каждый таск воркер не перезапускает?
источник

V

Vlad in Python Flask
Tishka17
как можно с помощью хранилища текстовых блобов шарить объект питона/операционной системы?
Не совсем объект, воркер генерит инфу и отдаёт серверу сокета, а сокет в свою очередь отправляет эту инфу клиентам
источник