Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Elixir/Phoenix中的多个并发请求之间共享结果?_Elixir_Phoenix - Fatal编程技术网

如何在Elixir/Phoenix中的多个并发请求之间共享结果?

如何在Elixir/Phoenix中的多个并发请求之间共享结果?,elixir,phoenix,Elixir,Phoenix,我有一个使用Phoenix用Elixir编写的API服务。它具有以下端点: 接收字符串参数 检查结果是否已存在于缓存中(DB或文件,参数为cache key): 如果是,请立即返回结果 如果否,则执行对第三方服务的外部请求,处理请求响应,缓存结果,然后返回 它工作得很好。但现在我想在并发请求之间共享结果:如果有一个请求a正在等待第三方服务响应或处理结果,那么具有相同参数的其他请求不应该执行相同的任务,它们应该等待来自请求a的结果 如果有人能帮我找到解决方案,我将不胜感激。只需将调用第三方服务

我有一个使用Phoenix用Elixir编写的API服务。它具有以下端点:

  • 接收字符串参数
  • 检查结果是否已存在于缓存中(DB或文件,参数为cache key):
    • 如果是,请立即返回结果
    • 如果否,则执行对第三方服务的外部请求,处理请求响应,缓存结果,然后返回
  • 它工作得很好。但现在我想在并发请求之间共享结果:如果有一个请求a正在等待第三方服务响应或处理结果,那么具有相同参数的其他请求不应该执行相同的任务,它们应该等待来自请求a的结果


    如果有人能帮我找到解决方案,我将不胜感激。

    只需将调用第三方服务的函数包装到中即可

    实现GenServer行为的这个过程将免费维护队列;检察官办公室就行了


    随后的请求将被放入进程邮箱,直到此请求完成,因此以下所有请求都将命中缓存。

    只需将调用第三方服务的函数包装到

    实现GenServer行为的这个过程将免费维护队列;检察官办公室就行了

    随后的请求将被放入进程邮箱,直到此请求完成,因此以下所有请求都将命中缓存