rvitinn

A senda ggn yfir vrinn Python

Var a dunda mr fram ntt vi a skrifa lti script til a streyma access_log skrna yfir http. g var ur binn a skrifa cgi script til a skoa skrna beint, alla ea hluta hennar, en nna kva g a skrifa forrit sem streymir ggnunum sem Python hlutum, mig langar nefnilega a skrifa client forrit sem snir mr hva er gangi vefjninum og hgt er a nota gegnum eldvegg. Svona client gti a sjlfsgu notast vi sama cgi script og parsa htmli, en mr finnst skemmtilegra a streyma ggnunum yfir sem lista af python hlutum. A sjlfsgu er til fullt af keypis lausnum sem gera svipaa hluti en g er a skrifa etta vegna ess a mr finnst a gaman!

Server forriti er afskaplega lti og merkilegt, les access_log skrna og filterar t leitarvlar, botta og fyrirfram skilgreindar ip tlur (t.d. mnar). Me parameter get g sagt hversu miki g vill a s lesi r skrnni til a ekki s sfellt veri a lesa hana alla. Nsta tgfa mun geyma upplsingar um hva var sast lesi og skila bara v sem er ntt ea taka parameter sem tiltekur fr hvaa tma vi viljum lesa r skrnni.

Python er afskaplega einfalt a taka tilvik af klasa og umbreyta yfir straum, til ess notar maur innbygga pakkann pickle ea cPickle, sem er hravirkari en takmrku tgfa af pickle.. g nota svo zlib til a jappa ggnunum og base64 til a umbreyta eim ur en g sendi yfir vrinn.

# server, EinhverKlasi er tpa sem vi skilgreinum
# server, getur veri listi, dictionary, set af klsum
# raun hva sem er
import pickle
import base64
import zlib
k = EinhverKlasi()
buffer = pickle.dumps(k)
buffer = zlib.compress(buffer)
buffer = base64.encodestring(buffer)
print buffer # cgi scripti sendir etta ggnin yfir client

# client, ggn stt af vefjn, URL vsar cgi scripti
import pickle
import base64
import zlib
import urllib2
buffer = urllib2.urlopen(URL).read()
buffer = base64.decodestring(buffer)
buffer = zlib.decompress(buffer)
k = pickle.loads(buffer)

# k inniheldur n nkvmlega smu ggn og server

python
Athugasemdir

Eggert - 14/01/04 19:19 #

Flott dmi. Hins vegar er rtt a benda eitt. EinhverKlasi arf a vera til bi client og server, og a sem meira er, module-an sem inniheldur hann arf a heita a sama bum megin. Hins vegar arf ekki a vera um a ra sama klasann....

Matti . - 14/01/04 19:43 #

segir nokku, mdlan arf a heita a sama, g fattai a ekki enda klasinn aal mdlu bum megin hj mr essu tilviki. g urfti reyndar a keyra etta einu sinni til a muna a klasinn yrfti a vera til bum megin :-)