运行daemonized Bottle应用程序,可以更改服务器

时间:2017-08-03 21:24:41

标签: python daemon bottle

我遇到了什么问题:

我需要正确以守护进程模式启动我的Bottle应用程序,同时保留bottle.run()命令的所有功能。

我尝试了什么:

  1. 使用BottleDaemon。它并不适合我,因为我需要更改服务器变量(并在将来使用bottle.run()执行更多操作),但bottledaemon.daemon_run()不支持它。
  2. daemonize.py。进程退出时没有任何日志和stdout / stderr。
  3. 将我的Bottle应用程序放入supervisor。我的shell帐户无权访问root或sudo,我认为这就是为什么它会导致我Permission denied出现subprocess.Popen错误。
  4. UPD。当我尝试通过supervisor

    启动瓶子应用时,这是追溯
    Traceback (most recent call last):
      File "/home/maxlunar/bottle/app.py", line 20, in <module>
        run(server='tornado', host='xxxx', port=xxxxx, reloader=True)
      File "/home/maxlunar/.local/lib/python3.5/site-packages/bottle.py", line 3079, in run
        p = subprocess.Popen(args, env=environ)
      File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
        restore_signals, start_new_session)
      File "/usr/lib/python3.5/subprocess.py", line 1282, in _execute_child
        raise child_exception_type(errno_num, err_msg)
    PermissionError: [Errno 13] Permission denied
    

    没有supervisor

    ,它仍能完美运行
    (bottle) maxlunar@Lydia:bottle$ python app.py
    Bottle v0.12.13 server starting up (using TornadoServer())...
    Listening on http://xxxxx:xxxxx/
    Hit Ctrl-C to quit.
    

    这是解决问题的另一种方法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

(答案基于评论中OP的其他信息。)

要在后台运行服务器并在注销时退出 ,可以使用nohup

nohup python myscript.py &