@@ -100,24 +100,26 @@ class CookerFeatures(object):
=20
=20
class EventWriter:
+ # 2 MBytes buffer for eventfile
+ _BUFFER_SIZE =3D 2 * 1024 * 1024
+
def __init__(self, cooker, eventfile):
self.cooker =3D cooker
- self.eventfile =3D eventfile
- self.event_queue =3D []
+ self._f =3D open(eventfile, "a", buffering=3Dself._BUFFER_SIZE)
+
+ def __del__(self):
+ self._f.close()
=20
def write_variables(self):
- with open(self.eventfile, "a") as f:
- f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.g=
etAllKeysWithFlags(["doc", "func"])}))
+ self._f.write("%s\n" % json.dumps({ "allvariables" : self.cooker=
.getAllKeysWithFlags(["doc", "func"])}))
=20
def send(self, event):
- with open(self.eventfile, "a") as f:
- try:
- str_event =3D codecs.encode(pickle.dumps(event), 'base64=
').decode('utf-8')
- f.write("%s\n" % json.dumps({"class": event.__module__ +=
"." + event.__class__.__name__,
- "vars": str_event}))
- except Exception as err:
- import traceback
- print(err, traceback.format_exc())
+ try:
+ str_event =3D codecs.encode(pickle.dumps(event), 'base64').d=
ecode('utf-8')
+ self._f.write("%s\n" % json.dumps({"class": event.__module__=
+ "." + event.__class__.__name__, "vars": str_event}))