Codes from my life

Posts tagged ‘python’

disabling output buffer from python scripts

Today I encountered a weird problem while running a python script with nohup. I was not getting anything in the output file even after waiting for 2-3 minutes which was unusual as I have used nohup on countless occasions with bash scripts and had not seen this issue.

Python itself buffers stdout and stderr which was causing this issue. So you have to explicitly disable buffering when you execute python scripts with nohup.

$nohup python -u

With -u parameter python will disable the buffering and you will get all the outputs as it happens.

proxy in xmlrpclib

This is just an extension of the example shown here .

import xmlrpclib, httplib
class ProxiedTransport(xmlrpclib.Transport):
    def set_proxy(self, proxy):
        self.proxy = proxy
	self.puser_pass = puser_pass
    def make_connection(self, host):
        self.realhost = host
        h = httplib.HTTP(self.proxy)
        return h
    def send_request(self, connection, handler, request_body):
        connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))
    def send_host(self, connection, host):
        connection.putheader('Host', self.realhost)
	connection.putheader('User-agent', self.user_agent)
	# Check is proxy username and password is set
	if len(self.puser_pass.strip()) != 0:
		connection.putheader('Proxy-authorization','Basic '+self.puser_pass)

p = ProxiedTransport()
proxyUsername = 'proxyuser'
proxyPassword = 'proxypass'
puser_pass = base64.encodestring('%s:%s' % (proxyUsername, proxyPassword)).strip()

p.set_proxy('proxy-server:8080', puser_pass)
server = xmlrpclib.Server('', transport=p)
print server.currentTime.getCurrentTime()

A similar code has been used in my blog client GScribble.