【问题标题】:Daemonize python websocket守护python websocket
【发布时间】:2018-02-22 15:22:19
【问题描述】:

我正在使用 ubuntu 16、Django 1.9,并在 docker 之上运行所有内容。我正在制作一个比特币机器人,只是为了尝试构建一些东西来炫耀。我被困住了 Binance API,它是一个 WebSocket 来正确守护进程。以下是我的做法:

  1. 在 docker 中运行容器
  2. 在 WebSocket.sh 脚本中执行一个 docker 命令,该命令在实时 docker 容器中运行报废功能:

WebSocket.sh:

docker exec <container name> <something to run, bash etc...> <args>
docker exec 817d359aff51 python myproject/scrapping.py

我正在使用这个命令来运行 websocket.sh 文件:

终端:

nohup ./websocket.sh script  args > script.out 2>&1

但是它从来没有把我的终端还给我,而是无限期地运行。当我 tail -f script.out 它显示正确的行为。

如何更好地守护这个任务?我研究了 Django-celery、cron 作业和 & 函数,但似乎没有一个是我想要的。我只想从命令行执行任务并将其作为后台进程抓取数据。我已经确定这是最好的方法,因为我在启动时在 Django 框架中找不到任何合适的方法。如果我使用 init.py 并使用 ready() 函数,它永远不会启动服务器,它只会抓取数据。谢谢你。

编辑:您是否建议使用 ready() 函数在 init.py 文件中启动一个新线程?

【问题讨论】:

    标签: python django docker websocket daemon


    【解决方案1】:

    我也有这个问题。我建议创建一个admin-command 并在一个单独的容器中运行此命令,一个容器运行服务器,另一个容器运行 WebSocket。在这种情况下,你有 Django 的上下文,它允许你使用 Django-ORM 或设置,docker 将负责进程管理,如果你使用线程,这将是复杂的。

    【讨论】:

    • 感谢您的有用建议!实际上,我最终在启动时运行的 uwsgi 文件中创建了一个线程,以便服务器也运行并且刮板工作。
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    相关资源
    最近更新 更多