#! /usr/bin/env python from flask import Flask, make_response, request from rq import Queue from load_redis import configure_redis from jobs import aggregate import os import json import logging app = Flask(__name__) env = os.getenv("FLASK_ENV", "production") # 30 mins - http://python-rq.org/docs/results/ q = Queue("default", connection=configure_redis(env), default_timeout=7200) apis = { "development": "http://" + str(os.getenv("HOST_IP", "172.17.42.1")) + ":3000", "staging": "https://panoptes-staging.zooniverse.org", "production": "https://panoptes.zooniverse.org", } api_root = apis[env] @app.route("/", methods=["POST"]) def start_aggregation(): try: body = request.get_json() project = body["project_id"] href = body["medium_href"] metadata = body["metadata"] token = body["token"]
import os from redis import Redis from rq import Worker, Queue, Connection from load_redis import configure_redis from aggregation_api import base_directory import yaml import rollbar def rollbar_handler(job, exc_type, exc_value, traceback): try: panoptes_file = open("config/aggregation.yml","rb") except IOError: panoptes_file = open(base_directory+"/Databases/aggregation.yml","rb") api_details = yaml.load(panoptes_file) if "rollbar" in api_details["default"]: rollbar_token = api_details["default"]["rollbar"] rollbar.init(rollbar_token,"production") rollbar.report_exc_info() listen = ['high', 'default', 'low'] env = os.getenv('FLASK_ENV', 'production') conn = configure_redis(env) with Connection(conn): worker = Worker(map(Queue, listen),exc_handler=rollbar_handler) worker.work()
#!/usr/bin/env python from flask import Flask, make_response, request from rq import Queue from load_redis import configure_redis from jobs import aggregate import os import json import logging app = Flask(__name__) env = os.getenv('FLASK_ENV', 'production') q = Queue(connection=configure_redis(env)) apis = { 'development': "http://" + str(os.getenv('HOST_IP', '172.17.42.1')) + ":3000", 'staging': "https://panoptes-staging.zooniverse.org", 'production': "https://panoptes.zooniverse.org" } api_root = apis[env] @app.route('/', methods=['POST']) def start_aggregation(): try: body = request.get_json() project = body['project_id'] href = body['medium_href'] metadata = body['metadata'] token = body['token']
#!/usr/bin/env python from flask import Flask, make_response, request from rq import Queue from load_redis import configure_redis from jobs import aggregate import os import json import logging app = Flask(__name__) env = os.getenv('FLASK_ENV', 'production') q = Queue(connection=configure_redis(env)) apis = { 'development': "http://"+str(os.getenv('HOST_IP', '172.17.42.1'))+":3000", 'staging': "https://panoptes-staging.zooniverse.org", 'production': "https://panoptes.zooniverse.org" } api_root = apis[env] @app.route('/',methods=['POST']) def start_aggregation(): try: body = request.get_json() project = body['project_id'] href = body['medium_href'] metadata = body['metadata'] token = body['token'] q.enqueue(aggregate, project, token, api_root+"/api"+href, metadata, env) resp = make_response(json.dumps({'queued': True}), 200)
import os from redis import Redis from rq import Worker, Queue, Connection from load_redis import configure_redis import yaml import rollbar from rollbar.contrib.rq import exception_handler listen = ['high', 'default', 'low'] env = os.getenv('FLASK_ENV', 'production') panoptes_file = open("config/aggregation.yml", "rb") api_details = yaml.load(panoptes_file) rollbar_token = api_details[env]["rollbar"] rollbar.init(rollbar_token, env, handler='blocking') conn = configure_redis(env) with Connection(conn): worker = Worker(map(Queue, listen)) worker.push_exc_handler(rollbar.contrib.rq.exception_handler) worker.work()
#! /usr/bin/env python from flask import Flask, make_response, request from rq import Queue from load_redis import configure_redis from jobs import aggregate import os import json import logging app = Flask(__name__) env = os.getenv('FLASK_ENV', 'production') #30 mins - http://python-rq.org/docs/results/ q = Queue('default', connection=configure_redis(env), default_timeout=7200) apis = { 'development': "http://" + str(os.getenv('HOST_IP', '172.17.42.1')) + ":3000", 'staging': "https://panoptes-staging.zooniverse.org", 'production': "https://panoptes.zooniverse.org" } api_root = apis[env] @app.route('/', methods=['POST']) def start_aggregation(): try: body = request.get_json() project = body['project_id'] href = body['medium_href'] metadata = body['metadata']