Acounting into mysql
authorSandro Knauß <knauss@netzguerilla.net>
Wed, 03 Nov 2010 01:18:38 +0100
changeset 55 ae3669fef3b0
parent 54 9774768ef3f0
child 56 3718abbfffd6
Acounting into mysql
iro/iro.py
iro/job.py
iro/joblist.py
iro/worker.py
--- a/iro/iro.py	Fri Oct 08 02:59:04 2010 +0200
+++ b/iro/iro.py	Wed Nov 03 01:18:38 2010 +0100
@@ -27,6 +27,7 @@
 from job import SMSJob, FAXJob, MailJob
 from joblist import Joblist
 from providerlist import Providerlist
+from acounting import Acounting
 
 class MyUserDB(UserDB):
     def __init__(self, userlist,jobqueue):
@@ -97,6 +98,7 @@
     MyManager.register('FAXob', FAXJob) 
     MyManager.register('MailJob',MailJob) 
     MyManager.register('Providerlist',Providerlist) 
+    MyManager.register('Acounting',Acounting)
     manager = MyManager()
     manager.start()
     
@@ -113,6 +115,17 @@
 
     smstrade=MySmstrade()
     smstrade.read_basic_config(conf)
+
+    cp = ConfigParser.ConfigParser()
+    cp.read(conf)
+    dbconn={'type':cp.get('db', 'type'),
+            'host':cp.get('db', 'host'),
+            'db':cp.get('db', 'db'),
+            'user':cp.get('db', 'user'),
+            'passwd':cp.get('db', 'passwd'),
+            'table':cp.get('db', 'table'),
+    }
+    
     
     #Benutzerdatenbank erstellen
     queue = Queue()
@@ -125,7 +138,7 @@
     provider.setDefault("sms","smstrade")
     provider.setDefault("fax","sipgate")
     provider.setDefault("mail","localhost")
-    jobqueue=Joblist(manager,  queue, provider)
+    jobqueue=Joblist(manager,  queue, provider,dbconn)
    
     userdb=MyUserDB(userlist,jobqueue)
 
--- a/iro/job.py	Fri Oct 08 02:59:04 2010 +0200
+++ b/iro/job.py	Wed Nov 03 01:18:38 2010 +0100
@@ -22,9 +22,18 @@
         self.status = "init"
         self.dStatus={"good":[], "failed":[]}
         self.id=None
+        self.acounting=None
+   
+    def setAcounting(self,ac):
+        self.acounting=ac
 
-    def start(self,id=None):
+    def setId(self, id):
         self.id=id
+        if self.acounting:
+            self.acounting.setId(id)
+
+    def start(self,indifier=None):
+        self.indifier=indifier
         self.status = "started"
         
     def stop(self):
@@ -48,12 +57,16 @@
         return None
         
     def addGood(self, good):
+        if self.acounting:
+            self.acounting.addGood(good)
         if type(good) == list:
             self.dStatus['good']=self.dStatus['good']+good
         else:
             self.dStatus['good'].append(good)
     
     def addFailed(self, failed):
+        if self.acounting:
+            self.acounting.addFailed(failed)
         if type(failed) == list:
             self.dStatus['failed']=self.dStatus['failed']+failed
         else:
--- a/iro/joblist.py	Fri Oct 08 02:59:04 2010 +0200
+++ b/iro/joblist.py	Wed Nov 03 01:18:38 2010 +0100
@@ -13,17 +13,19 @@
 
 from anbieter import content
 import md5, os,  time
-
+import logging
+logger=logging.getLogger("iro.joblist");
 
 class Joblist:
     '''
     Providing an list of jobs; each new job gets a hash id
     '''
-    def __init__(self,manager, queue,providerlist):
+    def __init__(self,manager, queue,providerlist,dbconn=None):
         self.jobs={}
         self.manager=manager
         self.queue=queue
         self.providerlist=providerlist
+        self.dbconn=dbconn
         
 
     def __getitem__(self,key):
@@ -31,6 +33,9 @@
 
     def __registerJob__(self, job):
         id = self._createID()
+        if self.dbconn:
+            job.setAcounting(self.manager.Acounting(id,self.dbconn))
+        job.setId(id)
         self.jobs[id]=job
         self.queue.put(job)
         return id
--- a/iro/worker.py	Fri Oct 08 02:59:04 2010 +0200
+++ b/iro/worker.py	Wed Nov 03 01:18:38 2010 +0100
@@ -11,17 +11,17 @@
         self.queue=queue
         
     def run(self):
-        id=0
+        indifier=0
         while 1:
             job=self.queue.get()
             if job is None:
                 break # reached end of queue
-            id+=1
-            logger.info('ein neuer Job(%d)' %(id))
+            indifier+=1
+            logger.info('ein neuer Job(%d)' %(indifier))
             try:
-                job.start(id)
-                logger.info('Job(%d) fertig ;)'%(id))
+                job.start(indifier)
+                logger.info('Job(%d) fertig ;)'%(indifier))
             except:
                 job.setStatus("error")
-                logger.exception('Job(%d) fehlgeschlagen :('%(id))
+                logger.exception('Job(%d) fehlgeschlagen :('%(indifier))