1,生产的NGINX环境,要指定自己的目录,而不是PROJ默认的。
upstream ism_host { server 127.0.0.1:9090; } server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass ism_host; uwsgi_param UWSGI_SCRIPT settings.wsgi;//自己生产的WSGI文件 uwsgi_param UWSGI_CHDIR /ism/ism; index index.html index.htm; client_max_body_size 35m; uwsgi_connect_timeout 300; #uwsgi_write_timeout 300; uwsgi_read_timeout 300; } location ^~ /static { root /ism/ism; } }
2,DJANGO的WSGI.PY有两套,生产的也要指向自己的SETTINGS文件。
""" WSGI config for ism project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ """ import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.prd_settings")//指向自己生产的配置文件路径 application = get_wsgi_application()
3,SUPERVISORD的配置文件,也要改成自己的SETTING文件。
[program:celeryd] command=/usr/local/python27/bin/celery worker --app=settings -c 4 -l info //注意--app指向生产的配置文件目录 stdout_logfile=/var/log/celeryd.log stderr_logfile=/var/log/celeryd.log autostart=true autorestart=true startsecs=10 stopwaitsecs=600
4,配置文件路径下的CELERY.PY文件,也要更新成自己的配置路径。
from __future__ import absolute_import import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.prd_settings') //此处也是生产的配置目录及文件 app = Celery('ism') app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) @app.task(bind=True) def debug_task(self): print('Request: {0!r}'.format(self.request))
6,settings文件里的数据库连接串,REDIS等,当然也需要分开,不再说配置了。
这样一来,不在同的环境下使用@celery_app.task时,NGINX提供服务器时,SUPERVISORD定位时,自己本地调试时,才不会出问题。
SO:
建立生产和测试的目录彻底分开,互不影响。各自己建立一套配置文件。