Instantly share code, notes, and snippets.

Embed
What would you like to do?
import argparse
import json
import logging
import os
from h.events import AnnotationEvent
from h.models import Annotation
from pyramid import paster
from pyramid.request import Request
log = logging.getLogger('h.worker')
parser = argparse.ArgumentParser('eventworker')
parser.add_argument('config_uri')
def main():
args = parser.parse_args()
paster.setup_logging(args.config_uri)
base_url = os.environ.get('BASE_URL')
if base_url is None:
base_url = 'http://localhost'
log.warn('BASE_URL not found in environment, using default: %s',
base_url)
request = Request.blank('/', base_url=base_url)
env = paster.bootstrap(args.config_uri, request=request)
request.root = env['root']
loop(request)
def loop(request):
def handle_message(reader, message=None):
if message is None:
return
data = json.loads(message.body)
action = data['action']
annotation = Annotation(**data['annotation'])
event = AnnotationEvent(request, annotation, action)
request.registry.notify(event)
reader = request.get_queue_reader('annotations', 'event-worker')
reader.on_message.connect(handle_message)
reader.start(block=True)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment