django的数据库访问等功能非常强大,但是通常的使用方式都是基于uwsgi的,如何运行基于django的独立进程呢?
经过尝试,配制方法如下:
1. 设置环境变量:
主要是以下两个:
export PYTHONPATH=$PYTHONPATH:/home/username/project
export DJANGO_SETTINGS_MODULE=project.settings
可以把上面的配置写到/home/username/.bash_rc或/home/username/.bash_profile下
调试时可以写到独立文件,例如/home/username/test_env.sh中
然后source /home/username/test_env.sh
2.在独立运行的进程的源代码文件(设为test_proc.py)开头写入以下代码:
import django
在主函数中写入:django.setup()
注意:
一定不能在该文件中import任何会调用数据库操作的模块,而应该直接import这些模块中需要调用的函数,而且被import的模块必须从PYTHONPATH环境变量中设置的位置开始,也就是说即使在相同目录下也得写明全路径。
但是可以import不带有数据库操作函数的模块。
红色部分务必注意!
================================================
补充:
如果由于多人调试,不方便按照第一步的方式设置环境变量,以免引起其他人调试的时候环境变量冲突,可以采用以下方式:
假设需要执行的python脚本位于prj/dir/目录下,在程序开头写入以下代码:
import os, sys
script_dir = os.path.split(os.path.realpath(__file__))[0] # 获取脚本所在的目录
prj_dir = os.path.dirname(script_dir) # 获取其上级目录,及django项目所在的目录。
sys.path.append(prj_dir) # 在python系统路径中加入上一步得到的目录。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hcloud.settings") # 设置DJANGO_SETTINGS_MODULE变量。
然后就可以正常使用了。