rich media: use cachex to avoid flooding remote servers

This commit is contained in:
William Pitcock 2019-01-04 23:23:47 +00:00
parent 4258dd8633
commit 0964c207eb
2 changed files with 17 additions and 2 deletions

View file

@ -63,6 +63,17 @@ def start(_type, _args) do
], ],
id: :cachex_object id: :cachex_object
), ),
worker(
Cachex,
[
:rich_media_cache,
[
default_ttl: :timer.minutes(120),
limit: 5000
]
],
id: :cachex_rich_media
),
worker( worker(
Cachex, Cachex,
[ [

View file

@ -2,9 +2,13 @@ defmodule Pleroma.Web.RichMedia.Parser do
@parsers [Pleroma.Web.RichMedia.Parsers.OGP] @parsers [Pleroma.Web.RichMedia.Parsers.OGP]
def parse(url) do def parse(url) do
{:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url) Cachex.fetch!(:rich_media_cache, url, fn _ ->
{:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url)
html |> maybe_parse() |> get_parsed_data() result = html |> maybe_parse() |> get_parsed_data()
{:commit, result}
end)
end end
defp maybe_parse(html) do defp maybe_parse(html) do