Skip to content

Commit aedbf24

Browse files
author
bluepizzey
committed
Added pika support to the bin/run_eridu.py script.
1 parent f6138e6 commit aedbf24

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
lines changed

Diff for: bin/run_eridu.py

+26-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
# -*- coding: utf-8 -*-
22

3+
import json
34
import time
45

56
import click
67
import schedule
8+
import pika
79

810
from eridu.logger import logger
911
from eridu.config import FILTER_TAGS, SECONDS_BETWEEN_REQUESTS
12+
from eridu.config import QUEUE_HOST, QUEUE_PORT, EXCHANGE, QUESTIONS_ROUTING_KEY, ANSWERS_ROUTING_KEY
1013
from eridu.core import get_post_ids, split_post_ids, get_questions, get_answers, filter_posts_by_tag
1114

1215
@click.command()
@@ -27,26 +30,39 @@ def run(params):
2730
page = params.get('page')
2831
logger.info('Getting posts for page {}.'.format(page))
2932

33+
connection = pika.BlockingConnection(pika.ConnectionParameters(
34+
host=QUEUE_HOST,
35+
port=QUEUE_PORT)
36+
)
37+
channel = connection.channel()
38+
39+
channel.exchange_declare(exchange=EXCHANGE,
40+
type='topic')
41+
3042
post_ids = get_post_ids(page)
3143
ids = split_post_ids(post_ids['items'])
3244

3345
questions = get_questions(ids['question_ids'])
3446
questions = filter_posts_by_tag(questions['items'], tags)
35-
for question in questions:
36-
try:
37-
print(question)
38-
except UnicodeEncodeError:
39-
pass
4047

41-
print('\n\n')
48+
routing_key = QUESTIONS_ROUTING_KEY
49+
for question in questions:
50+
message = json.dumps(question)
51+
channel.basic_publish(exchange=EXCHANGE,
52+
routing_key=routing_key,
53+
body=message)
4254

4355
answers = get_answers(ids['answer_ids'])
4456
answers = filter_posts_by_tag(answers['items'], tags)
57+
58+
routing_key = ANSWERS_ROUTING_KEY
4559
for answer in answers:
46-
try:
47-
print(answer)
48-
except UnicodeEncodeError:
49-
pass
60+
message = json.dumps(answer)
61+
channel.basic_publish(exchange=EXCHANGE,
62+
routing_key=routing_key,
63+
body=message)
64+
65+
connection.close()
5066

5167
params['page'] += 1
5268

Diff for: eridu/config.py

+6
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,9 @@
2222

2323
FILTER_TAGS = os.environ.get('ERIDU_FILTER_TAGS', 'python,python-2.x,python-3.x')
2424
SECONDS_BETWEEN_REQUESTS = int(os.environ.get('ERIDU_SECONDS_BETWEEN_REQUESTS', 300))
25+
26+
QUEUE_HOST = os.environ.get('ERIDU_RABBITMQ_HOST', 'docker.local')
27+
QUEUE_PORT = int(os.environ.get('ERIDU_RABBITMQ_PORT', 32769))
28+
EXCHANGE = os.environ.get('ERIDU_RABBITMQ_EXCHANGE', 'eridu')
29+
QUESTIONS_ROUTING_KEY = os.environ.get('ERIDU_RABBITMQ_QUESTIONS_ROUTING_KEY', 'posts.historical.questions')
30+
ANSWERS_ROUTING_KEY = os.environ.get('ERIDU_RABBITMQ_ANSWERS_ROUTING_KEY', 'posts.historical.answers')

Diff for: requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
Click>=6.0
22
schedule==0.3.2
33
requests==2.10.0
4+
pika==0.10.0

0 commit comments

Comments
 (0)