Size: a a a

Чат "Программист"

2020 September 02

b

barmatografOS in Чат "Программист"
Your KVXMMU
почему.
по мунчану
источник

CN

Cybernetic Neuron in Чат "Программист"
Есть вот такая функция-процесс:
from multiprocessing import Event, Process, Queue

q = Queue(maxsize=100)
continue_running = Event()

def save_product(evnt, queue):
   def save_offers(product):
       ...

   with ThreadPoolExecutor(max_workers=10) as pool:
       while evnt.is_set():
           product = queue.get()
           pool.submit(save_offers, product)
write: Process = Process(
   target=save_product,
   daemon=True,
   name='consumer',
   args=(continue_running, q),
)

continue_running.set()
continue_running.wait()
wite.start()
Есть второй процесс который синхронно складывает product в очередь, save_offers сохраняет их в базу, есть проблемы:

1) Докер контейнер в котором упаковано это добро, создаёт просто кучу --multiprocessing-fork в ос, может несколько десятков, хотя есть всего 5 процессов, основной, который запускается через ювикорн (фастапи, на 4 воркера), и 4 демона, в одном из которых запускается пул (выше написал его), ювикорн с 4 воркерами единожды запускает все процессы, очередь используют только 2 процесса

2) В базе как то появляются дубли, очень рандомно и очень редко, хотя в коде save_offers стоит проверка (возможно кликхаус виноват и буферная модель).

3) контейнер ограничен 8гб ОЗУ и все они забиты, хотя 100 штук в очереди вообще никак не могут такое потребление вызвать и очередь почти всегда нулевая (мб тредпул резервирует)
источник

YK

Your KVXMMU in Чат "Программист"
barmatografOS
по мунчану
по мурчану?
источник

YK

Your KVXMMU in Чат "Программист"
Cybernetic Neuron
Есть вот такая функция-процесс:
from multiprocessing import Event, Process, Queue

q = Queue(maxsize=100)
continue_running = Event()

def save_product(evnt, queue):
   def save_offers(product):
       ...

   with ThreadPoolExecutor(max_workers=10) as pool:
       while evnt.is_set():
           product = queue.get()
           pool.submit(save_offers, product)
write: Process = Process(
   target=save_product,
   daemon=True,
   name='consumer',
   args=(continue_running, q),
)

continue_running.set()
continue_running.wait()
wite.start()
Есть второй процесс который синхронно складывает product в очередь, save_offers сохраняет их в базу, есть проблемы:

1) Докер контейнер в котором упаковано это добро, создаёт просто кучу --multiprocessing-fork в ос, может несколько десятков, хотя есть всего 5 процессов, основной, который запускается через ювикорн (фастапи, на 4 воркера), и 4 демона, в одном из которых запускается пул (выше написал его), ювикорн с 4 воркерами единожды запускает все процессы, очередь используют только 2 процесса

2) В базе как то появляются дубли, очень рандомно и очень редко, хотя в коде save_offers стоит проверка (возможно кликхаус виноват и буферная модель).

3) контейнер ограничен 8гб ОЗУ и все они забиты, хотя 100 штук в очереди вообще никак не могут такое потребление вызвать и очередь почти всегда нулевая (мб тредпул резервирует)
чатом ошибся?
источник

CN

Cybernetic Neuron in Чат "Программист"
Cybernetic Neuron
Есть вот такая функция-процесс:
from multiprocessing import Event, Process, Queue

q = Queue(maxsize=100)
continue_running = Event()

def save_product(evnt, queue):
   def save_offers(product):
       ...

   with ThreadPoolExecutor(max_workers=10) as pool:
       while evnt.is_set():
           product = queue.get()
           pool.submit(save_offers, product)
write: Process = Process(
   target=save_product,
   daemon=True,
   name='consumer',
   args=(continue_running, q),
)

continue_running.set()
continue_running.wait()
wite.start()
Есть второй процесс который синхронно складывает product в очередь, save_offers сохраняет их в базу, есть проблемы:

1) Докер контейнер в котором упаковано это добро, создаёт просто кучу --multiprocessing-fork в ос, может несколько десятков, хотя есть всего 5 процессов, основной, который запускается через ювикорн (фастапи, на 4 воркера), и 4 демона, в одном из которых запускается пул (выше написал его), ювикорн с 4 воркерами единожды запускает все процессы, очередь используют только 2 процесса

2) В базе как то появляются дубли, очень рандомно и очень редко, хотя в коде save_offers стоит проверка (возможно кликхаус виноват и буферная модель).

3) контейнер ограничен 8гб ОЗУ и все они забиты, хотя 100 штук в очереди вообще никак не могут такое потребление вызвать и очередь почти всегда нулевая (мб тредпул резервирует)
Пачаны помогети
источник

YK

Your KVXMMU in Чат "Программист"
источник

b

barmatografOS in Чат "Программист"
Мы мурчаны
источник

b

barmatografOS in Чат "Программист"
А не пачаны
источник

YK

Your KVXMMU in Чат "Программист"
barmatografOS
Мы мурчаны
источник

CN

Cybernetic Neuron in Чат "Программист"
barmatografOS
Мы мурчаны
чуханы, ладно извини
источник

CN

Cybernetic Neuron in Чат "Программист"
БАян
источник

YK

Your KVXMMU in Чат "Программист"
мурчаны, слепая ты хуйня.
источник

YK

Your KVXMMU in Чат "Программист"
уже забанили?
источник

CN

Cybernetic Neuron in Чат "Программист"
там тоже не знают
источник

CN

Cybernetic Neuron in Чат "Программист"
Я везде спросил
источник

CN

Cybernetic Neuron in Чат "Программист"
Надо в англ чат ещё сходить где почти все индусы
источник

CN

Cybernetic Neuron in Чат "Программист"
Возможно я пишу слишком сложные штуки
источник

b

barmatografOS in Чат "Программист"
На си проще, используй си
источник

CN

Cybernetic Neuron in Чат "Программист"
barmatografOS
На си проще, используй си
Когда тоже самое за неделю, а не за год на си можно будет написать, я подумаю
источник

b

barmatografOS in Чат "Программист"
источник