<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-09-11 10:29 GMT+02:00 Marek Nožka <span dir="ltr"><<a href="mailto:marek@tlapicka.net" target="_blank">marek@tlapicka.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Ahoj<br>
<br>
Potřeboval bych malou radu. Učím programování(Python) na SŠ. Takže jsem<br>
vymyslel(okoukal), že si budeme hrát na Roboty. Bude to tahová hra.<br>
Jednotliví roboti(studenti) se připojí k serveru a budou mezi sebou soutěžit<br>
o nejlepší algoritmus, který projde bludištěm podle zadaných pravidel.<br>
<br>
Na serverovou část jsem chtěl použít Flask a vytvořit jednoduché REST API.<br>
Řeším ale jak mám obsloužit více klientů tak, aby na sebe navzájem počkali.<br>
Každý klient by měl říct, kam táhne. Ale odpověď můžu poslat až potom, co<br>
všichni pošlou požadavek. Napadli mě dvě řešení.<br>
<br>
1) Klient pošle požadavek a čeká na odpověď. Stream odpovědi se ale zastaví<br>
   a čeká se až se ozvou další klienti. Tohle nevím jak bych ve Flasku<br>
   udělal -- pokud to tedy vůbec jde. Pokoušel jsem se to vygooglit ale na<br>
   nic kloudného jsem nepřišel.<br></blockquote><div> </div><div><br></div><div>Ahoj. Tohle se ti ve Flasku, Djangu, aj. synchronních frameworcích bude dělat špatně. Použiješ-li asynchronní aiohttp, můžeš efektivně obsluhovat všechny requesty z Robotů "paralalně" (můžou paralelně čekat s odpovědí). Složitost implementace s aiohttp je zhruba stejná jako ve Flasku.</div><div><br></div><div><a href="http://aiohttp.readthedocs.org/en/stable/">http://aiohttp.readthedocs.org/en/stable/</a><br></div><div><br></div><div><br></div><div><br></div><div>Nicméně na tento problém se REST, respektive HTTP, zrovna moc nehodí (leda ty websockety). Vhodnější by bylo použít Pub/Sub. Měly by stačit dva topicy (channely), něco jako:</div><div><br></div><div>1. Round</div><div> - hra na něj dělá publish povelu, že je možné táhnout další kolo</div><div> - všichni roboti sem dělají subscribe a reagují na povel</div><div><br></div><div>2. Move</div><div> - hra se sem dělá subscribe a reaguje na tahy robotů</div><div> - roboti sem dělají publish tahů</div><div><br></div><div>Pro jednoduchost rozchození můžeš použít jako Pub/Sub broker třeba Redis. Má dobrou knihovnu jak pro asynchronní Pyhon aioredis, stejně tak pro klasický synchronní přístup redis-py.</div><div><br></div><div><a href="https://github.com/aio-libs/aioredis">https://github.com/aio-libs/aioredis</a><br></div><div><a href="https://github.com/andymccurdy/redis-py">https://github.com/andymccurdy/redis-py</a><br></div><div><br></div><div>Honza<br></div><div><br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
2) Klient pošle požadavek a za nějakou chvilku se zeptá jestli má<br>
   server už odpověď. To je zase více složitosti na straně klienta.<br>
<br>
Protože jsem nic podobného zatím nikdy nedělal, budu vděčný za každou<br>
připomínku, poznámku nebo radu. Co za knihovnu/framework byste mi<br>
doporučovali.<br>
<br>
Dííííky<br>
           Marek<br>
<br>
--<br>
 @ @ @     Marek Nožka<br>
 '****.@<br>
 :*****`@   email: marek <@t> tlapicka <d.t> net<br>
 `*****'   jabber: tlapicka <@t> mitranet <d.t> cz<br>
  :****:      web: <a href="http://tlapicka.net/" rel="noreferrer" target="_blank">http://tlapicka.net/</a><br>
  `****'<br>
  `****'   Powered by Debian GNU/Linux<br>
  `.**'<br>
    ¨¨<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
</blockquote></div><br></div></div>