<html><body><span style="display:block;" class="xfm_20544594"><div><span style="font-size:12pt;line-height:14pt;font-family:Arial;" class="xfmc1">Привет,</span><br/></div>
<div><span style="font-size:12pt;line-height:14pt;font-family:Arial;" class="xfmc1"><br data-mce-bogus="1"/></span></div>
<div><br/></div>
<div><i><span style="font-size:10pt;line-height:12pt;"><span style="font-family:Arial;">12 січня 2021, 22:47:34, від "Volodymyr Litovka" <</span><a href="mailto:doka@xlit.one" target="_blank"><span style="font-family:Arial;">doka@xlit.one</span></a><span style="font-family:Arial;">>:</span></span></i></div>
<div><br/></div>
<blockquote style="border-left:1px solid #cccccc;margin:0px 0px 0px 0.8ex;padding-left:1ex;">
<div style="display:block;">
<div>Привет,</div>
<div>On 12.01.2021 19:12, Vladimir Sharun
      wrote:</div>
<div><br/></div>
<blockquote type="cite" style="border-left:1px solid #cccccc;margin:0px 0px 0px 0.8ex;padding-left:1ex;">
<div style="display:block;">
<div><span style="font-size:12pt;line-height:14pt;font-family:Arial;">Постановка задачи требует уточнений. Надо
            понимать: </span></div>
<ol style="margin:5px 0;" start="1"><li><span style="font-size:12pt;line-height:14pt;font-family:Arial;">на каждый UDP пакет надо принимать решение,
              основываясь на критериях из кэша/апдейтов_в_пуше ? что это
              ?</span></li>
</ol></div>
</blockquote>
<div>каждый пакет - это текстовая строка, состоящая из 4-х полей, по
      одному из которых делается if и есличо, то три других проходят
      проверки на валидность и, дополняясь информацией из local cache,
      уходят в output</div>
<div>что-то типа</div>
<pre style="margin:5px 0;"><span style="color:#0033b3;">while True</span>:
    data, address = lsock.recvfrom(<span style="color:#1750eb;">1024</span>)
    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
</pre>
</div>
</blockquote>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;"><br data-mce-bogus="1"/></span></div>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;">memcache - это <b>TCP</b>, очень очень надо контролировать, чтобы у тебя не был каждый запрос - создание класса, коннект, прочитали, дисконнект. Т.е. это должен быть какой-то pipeline, в котором постоянно открыт коннект к мемкешу. Создать класс, коннект-прочитали-дисконнект - это ок 50-60мкс на лупбеке.<br data-mce-bogus="1"/></span></div>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;"><br data-mce-bogus="1"/></span></div>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;">Конструкторы и деструкторы - это тоже небесплатно кстати. Т.е. обслуживание ООП - это не халява.<br data-mce-bogus="1"/></span></div>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;"><br data-mce-bogus="1"/></span></div>
<blockquote style="border-left:1px solid #cccccc;margin:0px 0px 0px 0.8ex;padding-left:1ex;">
<div style="display:block;"><br/><blockquote type="cite" style="border-left:1px solid #cccccc;margin:0px 0px 0px 0.8ex;padding-left:1ex;">
<div style="display:block;">
<div><span style="font-size:12pt;line-height:14pt;font-family:Arial;">Да, и inram cache - это тоже штука в себе.</span></div>
</div>
</blockquote>
<div>а какая разумная альтернатива?</div>
</div>
</blockquote>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;"><br data-mce-bogus="1"/></span></div>
<div><span style="font-size:12pt;font-family:Arial;line-height:14pt;">Тут не в альтернативе, а в реализации. Мемкеш например может заглючить (не теоретически, а практически) и что ты тогда будешь делать ?<br data-mce-bogus="1"/></span></div>
<div><br/></div></span></body></html>