是否可以在 Django 网络应用程序中异步运行某些代码片段。如果是怎么办?
例如:
我有一个搜索算法可以返回成百上千个结果。我想将这些项目是搜索结果输入到数据库中,这样我就可以看到用户搜索最多的是什么。我不希望客户端不得不等待额外的一百或一千个数据库插入。有没有办法异步执行此操作?这样做有什么危险吗?有没有更好的方法来实现这一点?
最佳答案
就 Django 而言,是的。
更大的问题是您的网络服务器以及它是否适合线程处理。比如gunicorn的sync worker是单线程的,但是也有其他引擎,比如greenlet。我不确定他们使用线程的效果如何。
如果您从线程派生,则结合线程和多处理可能是一个问题:
Status of mixing multiprocessing and threading in Python
http://bugs.python.org/issue6721
话虽如此,我知道一些流行的性能分析实用程序一直在使用线程来报告指标,因此这似乎是一种公认的做法。
总而言之,使用标准库中的 threading.Thread 对象似乎是最安全的,只要您在其中执行的任何操作都不会 fork (python 的多处理库)
关于python - 在 Django Web 应用程序中运行异步 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145065/