长时间运行的Django进程可行吗?
Posted
技术标签:
【中文标题】长时间运行的Django进程可行吗?【英文标题】:Long running Django process feasible? 【发布时间】:2016-04-01 19:50:14 【问题描述】:是否有(推荐的)方法将 Django 作为长时间运行的单个进程(处理排队的请求)运行?
我正在尝试解决一个性能问题,即最佳预计性能调整仍然不够快,无法用于生产。调整后的数据库请求和缓存最终都会在反序列化中占用太多时间。
此外,查询集是相当静态的。
因此,解决性能问题的一种选择似乎是在长期运行的进程中对现有已执行/已实现的查询集进行计算。
有人知道以这种方式运行 django 的方法吗?
【问题讨论】:
【参考方案1】:因为 Django 使用 Python,您可以很容易地在应用程序上运行部分脚本,在服务器上运行,作为 cron
作业或持续运行。
如果脚本在项目目录中,则需要从以下几行开始:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<module>.settings")
其中<module>
是包含settings.py
文件的目录。
然后就可以正常访问对象和函数了,例如:
from app.models import *
if __name__ == "__main__":
obj = MyObj.objects.all()
【讨论】:
这里的问题是接受请求。我仍然想接受请求,但来自同一个进程,这样我就可以跨请求有效地共享内存中的数据。以上是关于长时间运行的Django进程可行吗?的主要内容,如果未能解决你的问题,请参考以下文章
以与长时间运行的 Python 进程不同的用户身份运行子进程
什么可能导致长时间运行的进程中突然出现 ClassNotFoundException?