Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
haskell-throttle
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-throttle
Commits
e0d9a8b3
Verified
Commit
e0d9a8b3
authored
Jul 31, 2024
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[cabal] add homepage/bug-reports page
parent
be38aa94
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
5 deletions
+50
-5
README.md
README.md
+1
-1
haskell-throttle.cabal
haskell-throttle.cabal
+49
-4
No files found.
README.md
View file @
e0d9a8b3
...
...
@@ -8,7 +8,7 @@ implementation using
Current Haskell throttle implementations
(e.g.
[
`Data.Conduit.Throttle`
](
https://hackage.haskell.org/package/conduit-throttle-0.3.1.0/docs/Data-Conduit-Throttle.html
)
or
[
`
io-throttle
](
https://hackage.haskell.org/package/io-throttle
)
)
or
[
io-throttle
](
https://hackage.haskell.org/package/io-throttle
)
)
work by just __slowing down__ incoming messages. However, sometimes we
don't care about delivering __all__ messages, but just want to limit
their rate. Hence this module is born.
...
...
haskell-throttle.cabal
View file @
e0d9a8b3
...
...
@@ -20,14 +20,56 @@ name: haskell-throttle
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.1.0.
0
version: 0.1.0.
1
-- A short (one-line) description of the package.
-- synopsis:
synopsis: A simple throttling library, which drops messages from same group.
-- A longer description of the package.
-- description:
description:
A [throttle](https://en.wikipedia.org/wiki/Rate_limiting)
implementation using
[Control.Concurrent.STM.TChan](https://hackage.haskell.org/package/stm-2.5.3.1/docs/Control-Concurrent-STM-TChan.html).
== Rationale
Current Haskell throttle implementations
(e.g. [Data.Conduit.Throttle](https://hackage.haskell.org/package/conduit-throttle-0.3.1.0/docs/Data-Conduit-Throttle.html)
or [io-throttle](https://hackage.haskell.org/package/io-throttle))
work by just __slowing down__ incoming messages. However, sometimes we
don't care about delivering __all__ messages, but just want to limit
their rate. Hence this module is born.
The main function is in
[Control.Concurrent.Throttle](./src/Control/Concurrent/Throttle.hs):
throttle :: (Ord id, Eq id, Show id) => Int -> TChan.TChan (id, a) -> (a -> IO ()) -> IO ()
It takes as arguments:
* resolution (in milliseconds)
* a ``TChan`` where `(id, a)` tuples are sent
* ``action`` which, for given ``a`` calls some ``IO`` action
In the above we have 2 types:
* ``a`` represents the incoming message which will be called with the supplied `action`
* ``id`` represents some identifier associated with the message. By
using this ``id`` we can perform grouping of messages and throttle
them accordingly.
The ``throttle`` function itself should be spawned in a separate
thread. It then awaits for incoming messages on the given `TChan`.
See [test directory](./test) for a sample usage.
== Design
Currently, the ``throttle`` function spawns a ``mapCleaner`` thread
which, periodically, checks the internal ``TVar`` value for values to
clean up and values to hold before the given delay happens.
-- The license under which the package is released.
license: AGPL-3.0-or-later
...
...
@@ -40,6 +82,9 @@ author: Przemysław Kamiński
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: pk@intrepidus.pl
homepage: https://gitlab.iscpif.fr/gargantext/haskell-throttle
bug-reports: https://gitlab.iscpif.fr/gargantext/haskell-throttle/issues
-- A copyright notice.
-- copyright:
category: Concurrency
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment