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

Cevap