启动时uwsgi django无法在没有postgresql

时间:2016-03-24 15:52:35

标签: django postgresql uwsgi

Debian服务器,uwsgi在启动时由crontab @reboot启动。

uwsgi.log

中返回此内容
  

ILE   " /usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql/base.py" ;,   第175行,在get_new_connection中       connection = Database.connect(** conn_params)File" /usr/lib/python2.7/dist-packages/psycopg2/ init .py",164行in   连       conn = _connect(dsn,connection_factory = connection_factory,async = async)django.db.utils.OperationalError:无法连接到   server:连接被拒绝服务器是否在主机上运行" 127.0.0.1"   并接受端口5432上的TCP / IP连接?

     

Thu Mar 24 05:19:02 2016 - 无法加载应用0(mountpoint ='')   (可以找不到或导入错误)Thu Mar 24 05:19:02 2016 - * no   app加载。进入完全动态模式 Thu Mar 24 05:19:02 2016 -    uWSGI以多种解释程序模式运行*

如果我等了,那么postgresql启动并重启uwsgi一切正常。

有没有办法告诉uwsgi等待postgresql?

1 个答案:

答案 0 :(得分:0)

使用systemd每天启动uWSGI而不是cron。

使用内容创建文件/etc/systemd/system/uwsgi.service

[Unit]
Description=uWSGI
After=syslog.target
After=postgresql@9.4-main.service
Wants=postgresql@9.4-main.service

[Service]
ExecStart=/usr/local/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini
Restart=always
KillSignal=SIGTERM
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

更改任何你想要的课程开始命令。

如果要启动多个uWSGI服务器(可能针对多个用户),请考虑使用uWSGI Emperor。您甚至可以创建一个共享目录,其中每个人都可以创建和管理它自己的文件(通过在目录上设置粘滞位)并将emperor设置为暴君模式,因此每个vassal将仅从拥有指定文件的用户帐户启动,如果你想让任何人都有能力创建自己的uWSGI实例。