Re: [Twisted-Python] twisted.web.error.Error & BaseException.message deprecation

2011-03-11 Thread Glyph Lefkowitz
On Mar 11, 2011, at 2:25 AM, Jason J. W. Williams wrote:

> Setting it as a class level attribute seems to suppress it:
> 
 class TestError(Exception):
> ... message = ""
> ...
> ... def __init__(self, msg):
> ...self.message = msg
> 
> Since it's a string and passed by value I think this would work. I'll
> open up a ticket if one's not already.

Sounds good.  I can't find one, but there have been other tickets with a 
similar purpose ('message' attributes on other exceptions).

If you have time after fixing this issue, it would be nice if you could 
double-check that there aren't any more of these lurking around :).


___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] twisted.web.error.Error & BaseException.message deprecation

2011-03-11 Thread Jason J. W. Williams
Hi Glyph,

I re-opened 4456 and attached a patch. I think that's this issue. The only 
other one I found in the tickets was for Conch and that one was marked fixed. 

-J

Sent via iPhone

Is your e-mail Premiere?

On Mar 11, 2011, at 9:51, Glyph Lefkowitz  wrote:

> On Mar 11, 2011, at 2:25 AM, Jason J. W. Williams wrote:
> 
>> Setting it as a class level attribute seems to suppress it:
>> 
> class TestError(Exception):
>> ... message = ""
>> ...
>> ... def __init__(self, msg):
>> ...self.message = msg
>> 
>> Since it's a string and passed by value I think this would work. I'll
>> open up a ticket if one's not already.
> 
> Sounds good.  I can't find one, but there have been other tickets with a 
> similar purpose ('message' attributes on other exceptions).
> 
> If you have time after fixing this issue, it would be nice if you could 
> double-check that there aren't any more of these lurking around :).
> 

___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


[Twisted-Python] UDP Logging Server

2011-03-11 Thread SIC FS LIST
Hello,

I am trying to write a UDP based logging server.

Generically speaking it looks somewhat like syslog except I needed a bit
more flexibility that syslog can provide (or at least that I think it can
provide).

What I'm trying to accomplish is:
-- receive UDP packet
-- parse UDP packet
-- write output to a log file
-- have the log files rotated on a periodic basis

So far I have a "working" implementation ... but I'm noticing that if I do
the following:
-- log when a message is received
-- that for that message it "might" show up in the file a pretty lengthy
period of time later

The actual UDP protocol:

class VocsLogger(DatagramProtocol):
def datagramReceived(self, data, (host, port)):
_proc_msg(self.transport, data, (host,
port))._new_msg().addCallback(handler)

The _proc_msg class:

class _proc_msg:
def __init__(self, sck, data, (host, port)):
self._sck = sck
self._data = data
self._host = host
self._port = port

def _new_msg(self):
d, _ = LogMsg().ParseSocketMsg(self._data)
if d.type.upper() == DISKINFO[0]:
DISKINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
elif d.type.upper() == LOADAVG[0]:
LOADAVG[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
elif d.type.upper() == MEMINFO[0]:
MEMINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
elif d.type.upper() == NETDEV[0]:
NETDEV[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
elif d.type.upper() == PSAUX[0]:
PSAUX[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
elif d.type.upper() == WHOINFO[0]:
WHOINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
else:
DEFAULT[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))

And I have a log rotate service that looks like this:

class LogRotateService(TimerService):
def __init__(self):
TimerService.__init__(self, 60 * 5, LogRotate)

And then I'm using twistd to actually make it work:

LogRotate()
application = service.Application("vocs-logger")
rotateLogService = LogRotateService()
rotateLogService.setServiceParent(application)
loggerService = internet.UDPServer(int(config['port']), VocsLogger(),
interface=config['host'])
loggerService.setServiceParent(application)


I'm probably approaching this the wrong way and not sure if I sure really
worry about deferring the actual process of writing to the log file or if
there was a better way altogether.

Thanks for any guidance.

SDR
___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] twisted.web.error.Error & BaseException.message deprecation

2011-03-11 Thread Glyph Lefkowitz

On Mar 11, 2011, at 12:52 PM, Jason J. W. Williams wrote:

> Hi Glyph,
> 
> I re-opened 4456 and attached a patch. I think that's this issue. The only 
> other one I found in the tickets was for Conch and that one was marked fixed. 

Thanks!  At the latest, this should get reviewed at the sprint.

-glyph
___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] twisted.web.error.Error & BaseException.message deprecation

2011-03-11 Thread Jason J. W. Williams
Pleasure. :)

-J

On Fri, Mar 11, 2011 at 2:28 PM, Glyph Lefkowitz
 wrote:
>
> On Mar 11, 2011, at 12:52 PM, Jason J. W. Williams wrote:
>
>> Hi Glyph,
>>
>> I re-opened 4456 and attached a patch. I think that's this issue. The only 
>> other one I found in the tickets was for Conch and that one was marked fixed.
>
> Thanks!  At the latest, this should get reviewed at the sprint.
>
> -glyph

___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] UDP Logging Server

2011-03-11 Thread Tim Allen
On Fri, Mar 11, 2011 at 01:15:47PM -0600, SIC FS LIST wrote:
> So far I have a "working" implementation ... but I'm noticing that if I do
> the following:
> -- log when a message is received
> -- that for that message it "might" show up in the file a pretty lengthy
> period of time later

Assuming the objects stored in DISKINFO[1] etc. are file objects, you
seem to be writing to the files but never calling flush(). If you don't
call flush(), Python (well, the C standard library) won't send the data
on to the OS until its buffer is full, or the file handle is closed. If
you're not getting that many log lines, it can take a while for that to
happen.

Of course, if you flush after every disk read, your program will run
a bit more slowly and with more I/O... for an application where
reliability is more important than performance (like logging) that's
probably acceptable.

> The actual UDP protocol:
> 
> class VocsLogger(DatagramProtocol):
> def datagramReceived(self, data, (host, port)):
> _proc_msg(self.transport, data, (host,
> port))._new_msg().addCallback(handler)

_proc_msg doesn't seem to be complicated enough to need its own class,
why not just do what _proc_msg does in VocsLogger?

> The _proc_msg class:
> 
> class _proc_msg:
> def __init__(self, sck, data, (host, port)):
> self._sck = sck
> self._data = data
> self._host = host
> self._port = port
> 
> def _new_msg(self):
> d, _ = LogMsg().ParseSocketMsg(self._data)
> if d.type.upper() == DISKINFO[0]:
> DISKINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> elif d.type.upper() == LOADAVG[0]:
> LOADAVG[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> elif d.type.upper() == MEMINFO[0]:
> MEMINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> elif d.type.upper() == NETDEV[0]:
> NETDEV[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> elif d.type.upper() == PSAUX[0]:
> PSAUX[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> elif d.type.upper() == WHOINFO[0]:
> WHOINFO[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))
> else:
> DEFAULT[1].write(d.ToString() + "\n%s\n" % (LOG_DELIM))

It depends on what DISKINFO[0] and DISKINFO[1] actually are, but
assuming they're a string and a file-handle, this code would look more
Pythonic as something like this:

LOGSINKS = {
"DISKINFO": open("/var/log/diskinfo", "w"),
"LOADAVG": open("/var/log/loadavg", "w"),
"MEMINFO": open("/var/log/meminfo", "w"),
"NETDEV": open("/var/log/netdev", "w"),
"PSAUX": open("/var/log/psaux", "w"),
"WHOINFO": open("/var/log/whoinfo", "w"),
"DEFAULT": open("/var/log/default", "w"),
}

def _new_msg(self, data):
d, _ = LogMsg().ParseSocketMsg(data)
type = d.type.upper()
sink = LOGSINKS.get(type, LOGSINKS['DEFAULT'])
sink.write("%s\n%s\n" % (d.ToString(), LOG_DELIM))

Hope that helps!

___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python


Re: [Twisted-Python] Failing tests in trunk

2011-03-11 Thread Facundo Batista
On Thu, Mar 10, 2011 at 9:51 PM,   wrote:

>> __init__ and leave it there, or use other formatting (not
>> time.strftime, I prefer this solution).
>
> I agree with your preference, switching away from time.strftime is probably
> the right thing to do.

Opened a ticket for this, patch attached:

http://twistedmatrix.com/trac/ticket/4937

Regards,

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/

___
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python