示例#1
0
文件: run.py 项目: mmqm4544/rta
def job_main():
    beanstalk = create_beanstalk()
    print "Job queue starts..."
    try:
        while True:
            try:
                job = beanstalk.reserve()
            except beanstalkc.DeadlineSoon:
                continue
            request = json.loads(job.body)
            jobId = job.jid
            print 'Working on job %s...' % jobId
            try:
                jobType = request["jobType"]
                if jobType == TRAIN:
                    category = request["category"]
                    model = request["model"]
                    trainer = Trainer.create(category, model)
                    if trainer:
                        data = {}
                        data["table_name"] = request["inputTableName"]
                        data["feature_names"] = request.get("features", None)
                        data["target_name"] = request.get("target", None)
                        ret = trainer.run(**data)
                        print 'Job %s finished.' % jobId
                    else:
                        ret = []
                        print 'No trainer for job %s.' % jobId
                elif jobType == PREDICT:
                    modelId = request["modelId"]
                    predictor = Predictor(modelId)
                    data = {}
                    data["table_name"] = request["inputTableName"]
                    ret = predictor.run(**data)
                    print 'Job %s finished.' % jobId
            except:
                ret = []
                print 'Error on job %s.' % jobId
            job.delete()
            #time.sleep(30)
            io_loop.add_callback(job_finished, jobId, ret)
    except (KeyboardInterrupt, SystemExit):
        beanstalk.close()
        sys.exit()