From 04befa5e0e6bb80d989aaf086db6ae8be893c480 Mon Sep 17 00:00:00 2001 From: Simon Fortier Date: Fri, 9 Aug 2019 10:16:36 -0400 Subject: [PATCH] Update readme --- README.md | 30 ++++++++++++++++++++++++++---- monitoring.png | Bin 0 -> 67982 bytes run.py | 2 ++ supervisord_reddit_feed.ini | 13 +++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 monitoring.png mode change 100644 => 100755 run.py create mode 100644 supervisord_reddit_feed.ini diff --git a/README.md b/README.md index 4272992..7a194e3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,29 @@ # reddit_feed -Fetches comments & submissions from reddit and publishes - serialised JSON to RabbitMQ for real-time ingest. +Fault-tolerant daemon that fetches comments & +submissions from reddit and publishes serialised + JSON to RabbitMQ for real-time ingest. -Can read up to 100 items per second, as per the API limits -(60 requests per minute, 100 items per request). +Can read up to 100 items per second (~6k/min), as per the API limits for +a single client. + +Can optionally push monitoring data to InfluxDB. Below is an +example of Grafana being used to display it. + +The daemon will attempt to stay exactly `REALTIME_DELAY` (60 by default) +seconds 'behind' realtime items. Of course, it can lag several minutes +behind when the number of events exceeds 100/s. In this case, +it will eventually catch up to the target time during lower traffic +hours. + +![monitoring](monitoring.png) + +Tested on GNU/Linux amd64, it uses ~60Mb of memory. + +### Usage +``` +python run.py +``` + +(It is recommended to run with `supervisord`, +see [supervisord_reddit_feed.ini](supervisord_reddit_feed.ini)) \ No newline at end of file diff --git a/monitoring.png b/monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ae3984645cc9fedd3e1dec2faafaa99e70c824 GIT binary patch literal 67982 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 O#fR!TYA_Y+zyB9XvzFBW literal 0 HcmV?d00001 diff --git a/run.py b/run.py old mode 100644 new mode 100755 index 62358d7..838975c --- a/run.py +++ b/run.py @@ -1,3 +1,5 @@ +#!/bin/env python + import datetime import json import logging diff --git a/supervisord_reddit_feed.ini b/supervisord_reddit_feed.ini new file mode 100644 index 0000000..467b77b --- /dev/null +++ b/supervisord_reddit_feed.ini @@ -0,0 +1,13 @@ +; Move this file to /etc/supervisor.d/ to enable it +; Make sure to change the RabbitMQ host, the path and the user!. +; Logs will be saved to directory/reddit_feed.log. + +; To enable it: +; sudo supervisorctl +; >update +; >start reddit_feed + +[program:reddit_feed] +command=/path/to/reddit_feed/run.py 172.17.0.2 +directory=/path/to/reddit_feed +user=some_user \ No newline at end of file