示例#1
0
def add_dataset():
    dataset = db.Dataset()
    dataset.name = request.form.get("name")
    dataset.location = request.form.get("location")
    dataset.save()

    job = dataset_queue.enqueue_call(func=calc, args=(unicode(dataset['_id']),))
    dataset.task_id = unicode(job.id)
    dataset.save()

    flash("Dataset created", 'success')
    return redirect(url_for('datasets'))
示例#2
0
def schedule_dataset(dataset_id, format=None):
    if format is None:
        format = 'html'

    dataset = db.Dataset.find_one( { '_id' : dataset_id } )

    # Enqueue
    job = dataset_queue.enqueue_call(func=calc, args=(unicode(dataset['_id']),))
    dataset.task_id = unicode(job.id)
    dataset.save()

    if format == 'json':
        return jsonify( { 'status' : "success" })
    else:
        flash("Dataset scheduled for periodic update")
        return redirect(url_for('datasets'))
示例#3
0
def calc(dataset_id):

    with app.app_context():

        # Save results back to Run
        dataset = db.Dataset.find_one( { '_id' : ObjectId(dataset_id) } )
        
        if dataset is None:
            return "No Dataset exists to update, aborting update process for ID %s" % dataset_id

        dataset.calc()
        dataset.updated = datetime.utcnow()

        # Poor man's scheduler, until rq supports scheduling
        # Sleep for 5 minutes to prevent crashing the DAP servers
        time.sleep(300)

        # And then do it again
        job = dataset_queue.enqueue_call(func=calc, args=(dataset_id,))
        dataset.task_id = unicode(job.id)
        dataset.save()

        return "Scheduled %s (%s)" % (dataset_id, dataset.name)