2015-09-11 10:29 GMT+02:00 Marek Nožka <ma...@tlapicka.net>: > Ahoj > > Potřeboval bych malou radu. Učím programování(Python) na SŠ. Takže jsem > vymyslel(okoukal), že si budeme hrát na Roboty. Bude to tahová hra. > Jednotliví roboti(studenti) se připojí k serveru a budou mezi sebou > soutěžit > o nejlepší algoritmus, který projde bludištěm podle zadaných pravidel. > > Na serverovou část jsem chtěl použít Flask a vytvořit jednoduché REST API. > Řeším ale jak mám obsloužit více klientů tak, aby na sebe navzájem počkali. > Každý klient by měl říct, kam táhne. Ale odpověď můžu poslat až potom, co > všichni pošlou požadavek. Napadli mě dvě řešení. > > 1) Klient pošle požadavek a čeká na odpověď. Stream odpovědi se ale zastaví > a čeká se až se ozvou další klienti. Tohle nevím jak bych ve Flasku > udělal -- pokud to tedy vůbec jde. Pokoušel jsem se to vygooglit ale na > nic kloudného jsem nepřišel. >
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. http://aiohttp.readthedocs.org/en/stable/ 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: 1. Round - hra na něj dělá publish povelu, že je možné táhnout další kolo - všichni roboti sem dělají subscribe a reagují na povel 2. Move - hra se sem dělá subscribe a reaguje na tahy robotů - roboti sem dělají publish tahů 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. https://github.com/aio-libs/aioredis https://github.com/andymccurdy/redis-py Honza 2) Klient pošle požadavek a za nějakou chvilku se zeptá jestli má > server už odpověď. To je zase více složitosti na straně klienta. > > Protože jsem nic podobného zatím nikdy nedělal, budu vděčný za každou > připomínku, poznámku nebo radu. Co za knihovnu/framework byste mi > doporučovali. > > Dííííky > Marek > > -- > @ @ @ Marek Nožka > '****.@ > :*****`@ email: marek <@t> tlapicka <d.t> net > `*****' jabber: tlapicka <@t> mitranet <d.t> cz > :****: web: http://tlapicka.net/ > `****' > `****' Powered by Debian GNU/Linux > `.**' > ¨¨ > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz >
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz