c67b7af2e0
Summary: Turning IO monad exceptions into Haxl monad exceptions can result in the IO monad exception being lost, which is what was happening to our AllocationLimitExceeded exceptions. See the comment with rethrowAsyncExceptions for more details. See also D1870627 Test Plan: P19741543 is a request that blows the alloc limit but wasn't being caught before. Reviewed By: akr@fb.com Subscribers: ldbrandy, memo, watashi, smarlow, akr, bnitka, jcoens FB internal diff: D1870631 Tasks: 6240444 Signature: t1:1870631:1424867073:d03bd0368ee968cecbcc5a0f654772b6f0eaf147 |
||
---|---|---|
example | ||
Haxl | ||
tests | ||
.gitignore | ||
haxl.cabal | ||
LICENSE | ||
logo.png | ||
logo.svg | ||
PATENTS | ||
readme.md | ||
Setup.hs |
Haxl
Haxl is a Haskell library that simplifies access to remote data, such as databases or web-based services. Haxl can automatically
- batch multiple requests to the same data source,
- request data from multiple data sources concurrently,
- cache previous requests.
Having all this handled for you behind the scenes means that your data-fetching code can be much cleaner and clearer than it would otherwise be if it had to worry about optimizing data-fetching. We'll give some examples of how this works in the pages linked below.
There are two Haskell packages here:
haxl
: The core Haxl frameworkhaxl-facebook
(in example/facebook): An (incomplete) example data source for accessing the Facebook Graph API
To use Haxl in your own application, you will likely need to build one or more
data sources: the thin layer between Haxl and the data that you want
to fetch, be it a database, a web API, a cloud service, or whatever.
The haxl-facebook
package shows how we might build a Haxl data
source based on the existing fb
package for talking to the Facebook
Graph API.
Where to go next?
-
The Story of Haxl explains how Haxl came about at Facebook, and discusses our particular use case.
-
An example Facebook data source walks through building an example data source that queries the Facebook Graph API concurrently.
-
The N+1 Selects Problem explains how Haxl can address a common performance problem with SQL queries by automatically batching multiple queries into a single query, completely invisibly to the programmer.
-
Haxl Documentation on Hackage.
-
There is no Fork: An Abstraction for Efficient, Concurrent, and Concise Data Access, our paper on Haxl, accepted for publication at ICFP'14.