iro/worker.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 08 Oct 2010 00:03:38 +0200
changeset 48 32763e344d3b
parent 42 1a9f191389a4
child 54 9774768ef3f0
permissions -rw-r--r--
job nun mit start(id), status() gibt list zurück, tests angepasst
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
# Worker code
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from multiprocessing import Process
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
     5
import logging
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
     6
logger = logging.getLogger("iro.worker")
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
class Worker(Process):
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
    def __init__(self,queue):
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
        Process.__init__(self)
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
        self.queue=queue
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
        
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
    def run(self):
41
02e9b54ef4f0 testWorker benutzbar machen & test laufen lassen
Sandro Knauß <knauss@netzguerilla.net>
parents: 23
diff changeset
    14
        logger.info('Workerprocess läuft nun...')
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    15
        id=0
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
        while 1:
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
            job=self.queue.get()
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
            if job is None:
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
                break # reached end of queue
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    20
            id+=1
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
    21
            logger.info('ein neuer Job(%d)' %(id))
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    22
            try:
48
32763e344d3b job nun mit start(id), status() gibt list zurück, tests angepasst
Sandro Knauß <knauss@netzguerilla.net>
parents: 42
diff changeset
    23
                job.start(id)
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
    24
                logger.info('Job(%d) fertig ;)'%(id))
20
0d7ffb9b2c7f logging started
Sandro Knauß <knauss@netzguerilla.net>
parents: 0
diff changeset
    25
            except:
42
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 41
diff changeset
    26
                job.setStatus("error")
23
0180b538ed74 logging->logger wg. multiprocessing
Sandro Knauß <knauss@netzguerilla.net>
parents: 20
diff changeset
    27
                logger.exception('Job(%d) fehlgeschlagen :('%(id))
42
1a9f191389a4 test mit fehlschlagendem Job
Sandro Knauß <knauss@netzguerilla.net>
parents: 41
diff changeset
    28