[uanog] Parallel processing - which one to use?
Vladimir Sharun
vladimir.sharun at ukr.net
Wed Jan 13 11:26:12 EET 2021
Привет,
12 січня 2021, 22:47:34, від "Volodymyr Litovka" <doka at xlit.one>:
Привет,
On 12.01.2021 19:12, Vladimir Sharun wrote:
Постановка задачи требует уточнений. Надо понимать:
на каждый UDP пакет надо принимать решение, основываясь на критериях из кэша/апдейтов_в_пуше ? что это ?
каждый пакет - это текстовая строка, состоящая из 4-х полей, по одному из которых делается if и есличо, то три других проходят проверки на валидность и, дополняясь информацией из local cache, уходят в output
что-то типа
while True:
data, address = lsock.recvfrom(1024)
try:
a, b, c, d = [i.strip()) for i in data.decode().split(',)]
a = int(a)
if a == 255:
if not b.isnumeric():
continue
va = memcached.get(b)
if va:
IPAddress(c)
d = int(d)
# we're here because no exception above
data = b.decode() + socket.inet_aton(c) + d.from_bytes(2, 'big) + va
for r in remotes:
rsock.send(data, r) # output UDP
elif a in [3, 5, 7]:
# smth else
...
except:
pass
memcache - это TCP, очень очень надо контролировать, чтобы у тебя не был каждый запрос - создание класса, коннект, прочитали, дисконнект. Т.е. это должен быть какой-то pipeline, в котором постоянно открыт коннект к мемкешу. Создать класс, коннект-прочитали-дисконнект - это ок 50-60мкс на лупбеке.
Конструкторы и деструкторы - это тоже небесплатно кстати. Т.е. обслуживание ООП - это не халява.
Да, и inram cache - это тоже штука в себе.
а какая разумная альтернатива?
Тут не в альтернативе, а в реализации. Мемкеш например может заглючить (не теоретически, а практически) и что ты тогда будешь делать ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.uanog.kiev.ua/pipermail/uanog/attachments/20210113/62b75224/attachment-0001.html>
More information about the uanog
mailing list