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.

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

Cevap