繁体   English   中英

如何在同步 Python 代码中使用异步代码?

[英]How can I use asynchronous code in synchronous Python code?

我正在开发 django 2.2(带有 mySql 数据库)应用程序,其中包含一些代码以从 csv 源导入数据。 代码是同步的:

  1. 加载下一条 csv 线并进行一些预处理(规范化/清理输入数据)

  2. 从输入数据创建或更新 django model(并执行数据库读/写)

这里有明显的瓶颈:

  • 从 csv 文件读取行上的磁盘 i/o(很少有超过 4M 记录的文件)
  • 数据库通信上的网络 i/o(tcp/ip 套接字)

该过程可以优化:读取输入数据,然后将其传递给异步代码以进行数据库操作 - 触发并忘记。 无需等待 DB 完成,而是加载下一条 csv 行。

在这种情况下,您对优化策略有何建议?

对于你的问题...

尝试将 django 与 gevent 一起使用

1) 使用 'csv' lib 和 'csv.reader' 并在从 'csv.reader' 调用返回的元素上循环

2) 使用 Mysqldb 或 pymsql 作为 django orm 的方言库来异步访问您的数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM