def batchlog(self, cursor, entries): logdir = os.path.join('/srv/logs', self.ident) if not os.path.exists(logdir): os.makedirs(logdir) logpath = os.path.join(logdir, (str(self.number) + (utils.format_attempt_path(self.attempt) + '_' + self.workname + '.log'))) with open(logpath, 'a+') as f: sql = ('insert into work_logs(id, number, workname, worker, log, ' 'timestamp, constraints, attempt) values ') values = [] for timestamp, log in entries: values.append('("%s", %s, "%s", "%s", "%s", %s, "%s", %s)' %(self.ident, self.number, self.workname, self.worker, _mysql.escape_string(log), utils.datetime_as_sql(timestamp), self.constraints, self.attempt)) f.write('%s %s\n' %(timestamp, log.rstrip())) sql += ', '.join(values) sql += ';' cursor.execute(sql) cursor.execute('commit;') if len(entries) > 1: print '%s Pushed %d log lines to server' %(datetime.datetime.now(), len(entries)) self.heartbeat(cursor)
def _unique_path(self, attempt=None): if not attempt: attempt = self.attempt path = os.path.join(self.ident, str(self.number), self.workname) if self.constraints != 'mysql': path += '_%s' % self.constraints path += utils.format_attempt_path(attempt) return path