HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
nerevu
riko
Python2016–2025
nerevu / riko

riko

A Python stream processing engine modeled after Yahoo! Pipes

4Distinct people
15Mentions
0Explicit recommenders
1.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A Python stream processing engine modeled after Yahoo! Pipes

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year15 dated mentions

Observed mentions: 2016-07-01 15:22:41 UTC to 2025-10-12 08:10:50 UTC.

024682016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC817
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC303
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

15 sources
I loved pipes. I had rss feeds from all the sites where I was sharing content collected up and formatted via pipes into a single rss feed that was pulled into a php blog. Then all those sites I used to post on stopped supporting rss one by one and finally pipes was killed off. For a while I used a python library called riko that did the same thing as pipes without the visual editor. I have to thank it for getting me off php and into python. https://github.com/nerevu/riko
In Ask HN: Abandoned/dead projects you think died before their time and why?
I had one of the most complex Pipes rigged up to automate the collection of all the content I created or favorited from all over the web. It merged them all into a single rss feed which my very simple bit of python code scraped and output as static html on my "blog". When yahoo killed off pipes I found https://github.com/nerevu/riko and realised that the visual aspect of pipes was holding me back. Having said that, the visual aspect of pipes was what made it easy for me to get into the whole idea of "stream processing". So I have a lot to thank the pipes team for.
In Ask HN: Which great products didn't succeed?
If I understand you correctly, you want to be able to join the results of multiple sources? You can do something like that with a library I wrote, riko [1]. A simple example would look something like this: from riko.modules import join, fetch, fetchdata rss_url = 'http://site.com/rss' json_url = 'http://site.com/json' json_path = 'path.to.data' fetch_conf = {'url': json_url, 'path': json_path} rss = fetch.pipe(conf={'url': rss_url}) json = fetchdata.pipe(conf=fetch_conf) joined = join.pipe(rss, other=json) next(joined) You can see the docs for the `join` pipe here [2]. [1] https://github.com/nerevu/riko [2] https://github.com/nerevu/riko/blob/master/riko/modules/join...
In Show HN: Early-stage Yahoo Pipes spiritual successor
> We use somewhat different concepts. I tend to think of streams as infinite, so it didn't occur to me to include something like a reverse pipe operator. We are in agreement. reverse has a notice that it isn't lazy [1]. I prefer to include pipes that aren't lazy since it can be helpful in some cases (plus the goal is to include all pipes originally in Yahoo! Pipes). The vast majority of pipes work just fine on infinite streams [2]. > I'm a bit surprised, why is filter an operator rather than a processor? I would think filters usually apply per-item, not to a whole stream? Just an implementation detail [3]. I agree it would be better if it were a processor since it could be parallelized. PRs welcome :). > I haven't worked on it very much but I'm heading towards push-based, using 0MQ for distribution/parallel processing, and using asyncio,
Read the rest
mostly because it plays nicely with 0MQ. See my previous comments related to this [4, 5]. [1] https://github.com/nerevu/riko/blob/master/riko/modules/reve... [2] Assuming you're not using the async or parallel mode [3] https://github.com/nerevu/riko/blob/master/riko/modules/filt... [4] https://news.ycombinator.com/item?id=12137591 [5] https://news.ycombinator.com/item?id=12137787
In Show HN: Riko – A Python stream processing engine modeled after Yahoo! Pipes
Cool! I actually starred your project last year. Never really got around to looking under the hood though. How do you handle the "multiple destinations" part? In python you can do it with a coroutines [1, 2] implementation (push based). I avoided that, since it coroutines have their own form of callback hell, and decided to implement a generator api (pull based) [3, 4]. But since generators can only be "pulled" into one destination, you have to copy a stream (subsequently converting it into a list) if you want more than one destination [5]. This works fine if the data can fit in memory, but if it can't then you're out of luck! [1] http://www.dabeaz.com/coroutines/copipe.py [2] http://www.dabeaz.com/coroutines/ [3] http://www.dabeaz.com/generators/retuple.py [4] http://www.dabeaz.com/generators [5] https://github.com/nerevu/riko/blob/maste
Read the rest
In Show HN: Riko – A Python stream processing engine modeled after Yahoo! Pipes
Interesting project. I hadn't come across this one yet. One difference that riko has is it's based around functions whereas this library (and practically every stream processing lib I've come across) is based around classes. I personally prefer the functional approach much better. And if you compare the word count examples on the respective readmes [1, 2], you will see riko is much more succinct. But I suppose the verbosity of the other libraries come with benefits like scaling across a cluster of servers. [1] https://github.com/plecto/motorway#word-count-example [2] https://github.com/nerevu/riko#word-count
In Show HN: Riko – A Python stream processing engine modeled after Yahoo! Pipes
`riko` is pure python stream processing library for analyzing and processing streams of structured data. It's modeled after Yahoo! Pipes [1] and was originally a fork of pipe2py [2]. It has both synchronous and asynchronous (via twisted) APIs, and supports parallel execution (via multiprocessing). Out of the box, `riko` can read csv/xml/json/html files; create text and data based flows via modular pipes; parse and extract RSS/ATOM feeds; and bunch of other neat things. You can think of `riko` as a poor man's Spark/Storm... stream processing made easy! Feedback welcome so let me know what you think! Resources: FAQ [3], cookbook [4], and ipython notebook [5] Quickie Demo: >>> from riko.modules import fetch >>> >>> stream = fetch.pipe(conf={'url': 'https://news.ycombinator.com/rss'}) >>> item = next(stream) >>> item['tit
Read the rest
In Show HN: Riko – A Python stream processing engine modeled after Yahoo! Pipes

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.