python - 设置系统环境变量

标签 python ubuntu flask service

我有一个 flask 服务器正在运行,如果不转储所有环境变量,我就无法让它作为服务运行。
如果没有 DATABASE_URL 环境变量,这是我应该使用 sqlite 的配置。它每次都有效,除非我将它作为服务运行,而此时它永远不会起作用。

#SQL Alchemy Database config
if os.environ.get('DATABASE_URL') is None:
    print('Using SQLITE')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_DATABASE_URI = ('sqlite:///' + os.path.join(basedir, 'app.db') + '?check_same_thread=False')
else:
    print('Using MySQL')
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    #SQLALCHEMY_DATABASE_URI = ('mysql+pymysql://username:password@localhost/20200830MYSQL')
    #export DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
将它放在/etc/environment 中适用于我手动运行时,但不适用于服务。这里是/etc/environment
DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
在终端中执行以下命令也不适用于我的服务。
export DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
我还将它放在/etc/systemd/system 的 server.service 文件中,但它仍然无法正常工作。这是 server.service 文件:
[Unit]
Description=Server
After=multi-user.target

[Service]
DATABASE_URL="mysql+pymysql://username:password@localhost/20200830MYSQL"
WorkingDirectory=/home/jon/server
ExecStart=/home/jon/server/env/bin/gunicorn -k gevent -b 0.0.0.0:5080 app:app
Restart=always

[Install]
RequiredBy = multi-user.target

最佳答案

详细here当我将变量放入 server.service 时,我需要更正一些语法。这是我使用的语法。

[Service]
Environment="SECRET=pGNqduRFkB4K9C2vijOmUDa2kPtUhArN"

关于python - 设置系统环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63661587/

相关文章:

python - `python -m foo.bar` 与 `python foo/bar.py` 本地导入

Python 2.6 和 3.1.1,早期版本兼容性

linux - ubuntu bash 中的错误 :. ./setenv.sh: 没有这样的文件或目录

ubuntu 12.10 perf stat <不支持> 周期

python - Flask - 获取 html 选择选项标签内的文本而不是选项的值

python - 使用 C 将 numpy 数组对象拆分为两个不同大小的 vector

python - 超简单的基于django邮件的用户注册系统?

tensorflow - 在树莓派上安装 tensorflow 1.9* 通过修改代码以使用 tf 2 解决

python - 如何从flask Restful API返回图像?

python - REST api 中的普通(非 HTML)错误页面