提取JSON并将其存储在数据库中时,使用异步等待功能是否有任何价值?

JarroVGIT

我最近开始使用C#编程(在PHP和JavaScript方面有一定经验之后),并且我构建了一个简单的控制台程序,该程序下载JSON字符串并将某些值存储在数据库中。所讨论的数据约为。70.000集(转换为行到我的数据库中)。由于我从(Quandl)下载此JSON的服务器上的限制,建议每个请求下载100个数据集,因此我有700个请求。

对于每个请求,我都会下载JSON字符串,将其反序列化并循环遍历100次,以将各自的值存储在数据库中。WebClient用来发出请求,并利用JSON.net进行反序列化。

目前,有了我的安装程序,大约需要花费时间。每个请求需要7秒钟,包括将数据插入数据库中,大约需要一个半小时才能完成。

问题就变成了;无论如何,有什么用async / await方法来加快它的速度吗?我阅读的内容更多是在UI方面(即,在处理请求时UI不冻结),但是我想知道是否有可能同时(或每10个时间)启动请求。 。为了完成操作,我添加了经过清理的代码版本(使代码缩短了一点,但未删除任何逻辑)。

https://dotnetfiddle.net/S0fnBc

旋钮人

async/await用于异步操作。异步执行不等于并行执行。异步执行不会阻塞调用方,而并行执行则允许并发执行。您需要并行执行。为此,您可以使用Task Parallel Library还有一本关于模式和实践的书,非常值得一读。这是一个简化的实现:

var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("/path/to/data");

var tasks = new Task<Task<HttpResponseMessage>>[5];

for (var i = 0; i < tasks.Length; i++)
{
    tasks[i] = Task<Task<HttpResponseMessage>>.Factory.StartNew(async () => await httpClient.GetAsync("?updatedFilterParams"));
}

Task.WhenAll(tasks); // wait for them to complete

foreach (var task in tasks)
{
    var data = task.Result.Result.Content.ReadAsStringAsync();
        // do something
}

需要注意的一些事情:WebClient无法并发请求,因此您要么必须new为每个请求添加另一个请求,要么HttpClient像我一样使用。另外,在代码和数据之间有很多事情可以并且经常对同一来源的并发请求施加限制,因此您将希望限制一次触发的请求数量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在python django中,是否可以从数据库表中提取数据并将其存储在数组中?

来自分类Dev

JRate如何使用jquery或javascript从选定的星星中获取价值并将其存储在数据库中

来自分类Dev

JRate如何使用jquery或javascript从选定的星星中获取价值并将其存储在数据库中

来自分类Dev

在Firebase中使用push()时,如何获取唯一ID并将其存储在数据库中

来自分类Dev

如何有效地记录使用javascript键入的用户并将其存储在数据库中?

来自分类Dev

如何使用 EaselJS 获取画布上绘制的所有点并将其存储在数据库中?

来自分类Dev

使用Twilio接收SMS并将其存储在数据库中

来自分类Dev

使用JQuery读取文本文件并将其存储在数据库中

来自分类Dev

如何使用PHP / MySQL实现嵌套位置并将其存储在数据库中?

来自分类Dev

如何解析此json数据?并将其直接存储在数据库中,然后在listview中显示

来自分类Dev

编辑时如何使用laravel提取存储在数据库中的序列化数据?

来自分类Dev

如何使用Laravel检索JSON数据并将其存储到数据库中

来自分类Dev

Codeigniter:如何从数组中获取数据并将其存储在数据库中

来自分类Dev

解析大量HTML数据并将其存储在数据库中

来自分类Dev

收集Twitter数据(推文)并将其存储在数据库中

来自分类Dev

Express.js-foreach数据数组并将其存储在数据库中

来自分类Dev

解析大量HTML数据并将其存储在数据库中

来自分类Dev

如何从cnc控制器获取数据并将其存储在数据库中?

来自分类Dev

存储在数据库中时使用MD5和密码哈希功能

来自分类Dev

要上传Excel并将其存储在数据库中?

来自分类Dev

要上传Excel并将其存储在数据库中?

来自分类Dev

将数组存储在数据库中并将其作为数组从数据库取回的最佳方法

来自分类Dev

使用AngularJS从JSON中提取数据库中的数据并将其显示在文本框中

来自分类Dev

使用SQL Azure数据库时,存储过程是否有任何差异/限制

来自分类Dev

使用SQL Azure数据库时,存储过程是否有任何差异/限制

来自分类Dev

在数据库中进行选择并将其显示在表中时重复

来自分类Dev

使用PHP在数据库中存储价值-来自JavaScript的Ajax调用

来自分类Dev

使用C#编辑DataGridview并将其保存在数据库表中

来自分类Dev

是否可以从HTML5的本地存储中提取数据并将其保存到服务器数据库?

Related 相关文章

  1. 1

    在python django中,是否可以从数据库表中提取数据并将其存储在数组中?

  2. 2

    JRate如何使用jquery或javascript从选定的星星中获取价值并将其存储在数据库中

  3. 3

    JRate如何使用jquery或javascript从选定的星星中获取价值并将其存储在数据库中

  4. 4

    在Firebase中使用push()时,如何获取唯一ID并将其存储在数据库中

  5. 5

    如何有效地记录使用javascript键入的用户并将其存储在数据库中?

  6. 6

    如何使用 EaselJS 获取画布上绘制的所有点并将其存储在数据库中?

  7. 7

    使用Twilio接收SMS并将其存储在数据库中

  8. 8

    使用JQuery读取文本文件并将其存储在数据库中

  9. 9

    如何使用PHP / MySQL实现嵌套位置并将其存储在数据库中?

  10. 10

    如何解析此json数据?并将其直接存储在数据库中,然后在listview中显示

  11. 11

    编辑时如何使用laravel提取存储在数据库中的序列化数据?

  12. 12

    如何使用Laravel检索JSON数据并将其存储到数据库中

  13. 13

    Codeigniter:如何从数组中获取数据并将其存储在数据库中

  14. 14

    解析大量HTML数据并将其存储在数据库中

  15. 15

    收集Twitter数据(推文)并将其存储在数据库中

  16. 16

    Express.js-foreach数据数组并将其存储在数据库中

  17. 17

    解析大量HTML数据并将其存储在数据库中

  18. 18

    如何从cnc控制器获取数据并将其存储在数据库中?

  19. 19

    存储在数据库中时使用MD5和密码哈希功能

  20. 20

    要上传Excel并将其存储在数据库中?

  21. 21

    要上传Excel并将其存储在数据库中?

  22. 22

    将数组存储在数据库中并将其作为数组从数据库取回的最佳方法

  23. 23

    使用AngularJS从JSON中提取数据库中的数据并将其显示在文本框中

  24. 24

    使用SQL Azure数据库时,存储过程是否有任何差异/限制

  25. 25

    使用SQL Azure数据库时,存储过程是否有任何差异/限制

  26. 26

    在数据库中进行选择并将其显示在表中时重复

  27. 27

    使用PHP在数据库中存储价值-来自JavaScript的Ajax调用

  28. 28

    使用C#编辑DataGridview并将其保存在数据库表中

  29. 29

    是否可以从HTML5的本地存储中提取数据并将其保存到服务器数据库?

热门标签

归档