Пример #1
0
    def __init__ (self, scHandle, host = common.FLASK_HOST, port = common.FLASK_PORT):
        """
        Creates the greenlets and flask server.
        """
        # Save the parameters
        global GlobalSCHandle
        GlobalSCHandle          = scHandle
        self.host               = host
        self.port               = port

        # Launch the greenlets
        self.jobsMonitor        = JobsMonitorGreenlet(scHandle)
        self.jobsMonitor.start()
        self.responseMonitor    = ResponseMonitorGreenlet(scHandle)
        self.responseMonitor.start()
        

        # Start the Flask server
        http                    = WSGIServer((host, port), self.FLASK_APP)
        http.serve_forever()
Пример #2
0
class Server (object):
    """
    Manages the Flask server and related processes.
    """

    FLASK_APP       = Flask(__name__)
    FLASK_APP.debug = True

    def __init__ (self, scHandle, host = common.FLASK_HOST, port = common.FLASK_PORT):
        """
        Creates the greenlets and flask server.
        """
        # Save the parameters
        global GlobalSCHandle
        GlobalSCHandle          = scHandle
        self.host               = host
        self.port               = port

        # Launch the greenlets
        self.jobsMonitor        = JobsMonitorGreenlet(scHandle)
        self.jobsMonitor.start()
        self.responseMonitor    = ResponseMonitorGreenlet(scHandle)
        self.responseMonitor.start()
        

        # Start the Flask server
        http                    = WSGIServer((host, port), self.FLASK_APP)
        http.serve_forever()


    # Index page
    @FLASK_APP.route("/")
    def index ():
        """
        Placeholder.
        
        TODO: Do something with this...
        """
        return "Hello World!"


    # Add job form page
    @FLASK_APP.route("/addJobForm", methods = ["GET"])
    def addJobForm ():
        """
        Provides a form to add a job.
        """
        form = "<html><head><title>Add Job</title></head><body>"

        if "success" in request.args:
            form += "<p><font color='green'><b>%s</b></font></p>" % str(request.args["success"])
        elif "error" in request.args:
            form += "<p><font color='red'><b>%s</b></font></p>" % str(request.args["error"])       

        #form += "<p><form action='/addJob' method='POST'>Job Name: <input type='text' name='name'/><br/>File Name: <input type='text' name='fileName'/><br/>Target Path: <input type='text' name='targetPath'/><br/><input type='hidden' name='fromForm' value='1'/><input type='submit' value='Add Job'></form></p>"
        form += "<p><form action='/addJob' method='POST'>Job Name: <input type='text' name='name'/><br/>File Name: <input type='text' name='filePath'/><br/>Target Path: <input type='text' name='destinationPath'/><br/><input type='submit' value='Add Job'></form></p>"
        return form


    @FLASK_APP.route("/addJob", methods = ["POST"])
    def addJob ():
        """
        Adds a job to the jobs queue from a post request.
        """
        try:
            if request.method == "POST":
                # If we get json data use that instead
                if request.json and len(request.json) > 0:
                    request.form = request.json

                # Create the job message
                jobMessage = GlobalSCHandle.jobManager.getJobMessageFromData(request.form)

                print "Job message: %s" % str(jobMessage) 

                # Add the job
                if jobMessage:
                    GlobalSCHandle.amazonSQSManager.addQueueMessage(GlobalSCHandle.amazonSQSManager.jobsQueue, jobMessage)

                # Redirect to form with 'success'
                if "fromForm" in request.form and request.form["fromForm"]:
                    return redirect(url_for("addJobForm", success = "%s job added!" % request.form["name"]))

                return "Job added successfully."

        except Exception, addJobError:
            print "Failed to add job with exception %s." % str(addJobError)

        return "Error adding job."