21 Nisan 2014 19:50 tarihinde Cerem Cem ASLAN <[email protected]> yazdı:
> Nereden başlayım bilemedim. > > Yani Spyne'ın yazarısınız? Harika! Bu kadar etraflı bilgiyi başka nereden > ne kadar zamanda bulurdum, kim bilir. Çok çok teşekkür ederim. Her maçtan > önce bi makale istiyoruz yalnız :) > > İlk gördüğümde Spyne'ı denemek istedim, fakat örnekten yola çıkamadım. > Verdiğiniz sayfada client side kodu görünmüyordu (hala yok). Fakat şimdi > belgelere bakınca örnek kod gördüm. Birazdan bir örnek denemeye girişirim. > > Kafamda milyon tane soru oluştu fakat hiçbiri net değil, soramıyorum. > Tahminen 5 saattir bu maili yazmaya çalışıyorum. Galiba RPC meselesini > biraz daha araştırıp tam olarak neye ihtiyacım var, onu anlamam lazım. > > Yalnız temel ihtiyacımın şu olduğunu biliyorum: Ben herhangi bir nesne > tanımlayım, bu nesnenin tüm metod ve değişkenlerine (hatta @property başka > bir şey olarak geçiyor galiba, onlara da) başka bir uygulamadan ulaşayım. > > Msgpack veya JSON bazı nesneleri serileştiremiyor. Neden, bilmiyorum. Ben > yanlış bir şey de bekliyor olabilirim. > Aslında aklımdaki bu konularla ilgili birkaç soru vardı. Örneğin: > http://stackoverflow.com/questions/23124598/why-an-instance-can-not-be-serialized-with-json?noredirect=1#comment35353832_23124598 > > Thread yerine Celery ve Asyncoro'yu kullanmayı deniyordum. Twisted'ı bu > noktada nasıl kullanırım, tam hayal edemedim. Ona da ayrıca bakayım. > Bu konuda geniş bilgim yok ancak çalıştığım hobi projemde Tornado kullanıyorum, thread yerine bir Tornado loop çalıştırıp gen modülü, periodiccallback fonksiyonu kullanmak daha iyi olabilir diye 3 kuruşum var. > > Geç cevap yazdığım için kusura bakmayın, 1. çok belalı bir server kurulumu > yaptım, 2. değindiğiniz konularda eksik olduğum gün gibi ortada, neyi sorup > neyi söyleyeceğimi düşünmek bile çok zaman aldı. > > > > > 20 Nisan 2014 19:02 tarihinde Burak Arslan <[email protected]>yazdı: > >> On 18/04/14 20:09, Cerem Cem ASLAN wrote: >> >> >> spyne iddalı görünüyor. Burada Pyro kullandığıma bakmayın, esas projede >> RabbitMQ+pickle kullanarak kendim bir mesajlaşma mekanizması kurdum. >> ZeroRPC de denedim, msgpack her sınıfı string'e çeviremiyor diye işimi >> görmedi, kullanamadım. >> >> >> Hadi size bir "Python ile RPC tarihcesi" yazayim, maca daha var nasilsa :) >> >> WSDL/SOAP 1.1 ikilisi CORBA ile karsilastirildiginda az biraz biraz >> calisan bir rpc protokoluydu. Ben de 2009 senesinde bu prokole elimi >> verdim, kolumu kaptirdim, ama sonra kurtarmayi basardim :) >> >> Ilk basta python icin sifirdan Xml Schema 1.0, Wsdl 1.1 ve Soap 1.1 >> speclerinin calisan bir altkumesini implement ettim. Proje once Soaplib >> olarak basladi, sonra Rpclib olarak devam etti, sonra baktim rpclib berbat >> bir isim, adini son kez Spyne olarak degistirdim. >> >> Wsdl/Soap rpc acisindan kotu bir fikir olsa da, bunlarin temelinde yatan >> Xml Schema standardi gayet basarili bir "document validation framework". >> Bunu gorunce, spyne'daki Soap/Wsdl apisini diger protokolleri kapsayacak >> sekilde genellestirdim. Boylece MessagePack, Json ve Yaml gibi >> formatlardaki dokumanlari 1) hem Xml Schema formatindaki bir dokuman >> tanimiyla validate edebilir olduk 2) hem de Xml Schema'nin destekledigi >> butun veri yapilarini destekletir olduk. Yani Spyne yapitaslariyla >> tanimlanmis her veri yapisini MessagePack ile kullanabilirsiniz, orjinal >> serializer'in eksiklerini ilgili standartlari dahil ederek kapattim. Orn. >> MessagePack veya Json icin datetime nesnesini ISO 8601 ile stringe >> ceviriyorum. >> >> Ben bunlarla ugrasirken *MQ'lar patladi. Son bir kac senedir izlemiyorum >> ama, RabbitMQ dedigimiz proje AMQP 0.9 denen mesajlasma standardinin erlang >> ile implement edilmis hali. Herhalde bu zaman kadar 1.0'i da implement >> etmislerdir. >> >> AMQP, iMatix isimli Belcikali bir yazilim firmasinin icat ettigi, daha >> sonra OASIS standardi olmus bir mesajlasma protokolu. >> >> iMatix, AMQP 1.0 i yayinladiktan sonra (veya hemen once, tam bilemedim >> simdi) AMQP grubuna "AMQP ve etrafindaki teknolojilerden bir cacik >> olmayacagini farkettigimiz icin biz AMQP projesinden cekiliyoruz. 280 >> sayfalik RPC protokol standardi olmaz, biz ZeroMQ ile yolumuza devam >> edecegiz" minvalinde bir mail atti. >> >> ZeroMQ iste boyle dogdu. Aman allahim ne olay kopardi, of ne buyuk bir >> icatti. Ben de hemen olaya baliklama atladim tabii ve Spyne icin bir ZeroMQ >> transport implement ettim (Yani ZeroRPC'nin yaptiginin aynisini Spyne'in su >> konfigurasyonuyla yapabilirsiniz = >> http://spyne.io/#inprot=MessagePackDocument&outprot=MessagePackDocument&s=rpc&tpt=ZeroMQServer&validator=true >> ) >> >> Sonra ortaya cikti ki, ZeroMQ pub/sub icin tamam ama rpc icin cok sakat >> bir cozum. Sebebi de target hostun ulasilamaz durumda oldugunu (zmq >> icinden) anlamanin bir yolu yok. ( >> https://news.ycombinator.com/item?id=6089252) Bir de ZeroMQ 2.0.x veya >> 2.1.x'i uzaktan yanlis bir paket gonderip assertion error'a >> dusurebiliyordunuz zamaninda, herhalde duzeltmislerdir. >> >> ZeroMQ'nun asil gelistiricisi olan Martin Sustrik adli kisi bir sure >> sonra ZeroMQ'nun gelecegi hakkinda firma sahibi Pieter Hintjens adli >> kisiyle anlasamayip iMatix'ten ayrildi ve CrossRoads (libxs)'e basladi. >> Kendisi blogunda bu sureci, ZeroMQ'nun eksiklerini vs. uzun uzun anlatmis, >> ilgilenen okuyabilir. libxs'ten bir cacik olmadi. >> >> Yaraticisi tarafindan cope atilan bir standart uzerine kurulmus RabbitMQ >> ve kuzenleri ise yollarina devam ediyorlar. RabbitMQ (ve su Enterprise >> Message Bus adiyla anilan benzer cozumler) ozunde uc is yapiyor: >> Discovery, Serialization ve (Persistent) Queuing. iMatix AMQP'yi cope >> atarken diyordu ki, serialization ve persistence uygulamanin, discovery de >> DNS'in isi, biz sadece kuyruk yonetimini uzerimize alalim, cunku diger >> konularda zaten coktan cozulmus durumda. >> >> Burada bu aciklamanin detayini okuyabilirsiniz: >> http://zeromq.org/whitepapers:brokerless >> >> Bu anlayisla da message queue bir daemon olmaktan cikti ve bir library >> oldu. Boylece de ZeroMQ dogmus oldu. >> >> *MQ'lar da boyle. Pickle'a gelirsek, pickle'i RPC protokolu olarak fazla >> ciddiye almamak lazim, hem yavas hem de guvenli degil. Bana inanmiyorsaniz >> Youtube'un kurucularindan mike solomon'un pycon 2012 konusmasini >> izleyebilirsiniz :) (Biliyorsunuz youtube'u Python ile yazmislar) >> >> Bunlar disinda bir de thrift/protocol buffers var. Ayni insan Google'da >> calisirken ProtoBuf'u yaziyor, sonra Facebook'a gecince bastan biraz daha >> genisleterek Thrift'i yaziyor. Ben MessagePack ile mutlu oldugumdan bunlara >> hic el atmadim, mutlaka daha iyi ve daha kotu oldugu noktalar vardir. >> >> Benim tavsiyem http ile json veya msgpack kullanmaniz. Spyne kullanmaniz >> sart degil ama kullanirsaniz validation, formatlar arasi donusum vb. isler >> bedavaya gelir. >> >> >> >> Bu arada ani bir gelişme ile zaman konusu biraz daha yayıldı, o yüzden >> önerilere (eleştirilere) de açığım. Mesela biraz thread cehennemine döndü >> ortalık, her önüne gelen bi thread açıyor. O biraz sıkıntı yaratıyor. >> Niyeyse multiprocessing'e hiç el atmadım (threading kolayıma geldi, öyle >> diyeyim). Özellikle bu konuda da önerilere açığım. >> >> >> Python 2 ile Twisted, 3 ile asyncio kullanin. Python ile thread >> kullanmanin alemi yok, process kullanmak da 1) fazla memory kullaniyor 2) >> ipc ile ugrastiriyor. >> >> Umarim bu yazdiklarim isinize yarar :) Biraz daginik oldu kusura bakmayin. >> >> Selamlar, >> Burak >> >> _______________________________________________ >> Linux-sohbet mailing list >> [email protected] >> https://liste.linux.org.tr/mailman/listinfo/linux-sohbet >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> >> > > _______________________________________________ > Linux-sohbet mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-sohbet > Liste kurallari: http://liste.linux.org.tr/kurallar.php > > -- Ali E.İMREK
_______________________________________________ Linux-sohbet mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-sohbet Liste kurallari: http://liste.linux.org.tr/kurallar.php
