我正在使用ubuntu 16,Django 1.9,并在docker上运行所有内容。我正在制作一个比特币机器人,只是为了尝试构建一些炫耀的东西。我很难获得Binance API,这是一个正确守护进程的WebSocket。我正是这样做的:
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 jobs和&amp;功能,但似乎没有我想要的。我只想从命令行执行任务,并将数据作为后台进程抓取。我已经确定这是最好的方法,因为在启动时我无法在Django框架中找到任何正确的方法。如果我使用 init .py并使用ready()函数,它永远不会启动服务器,它只是擦除数据。谢谢。
编辑:您是否建议使用ready()函数在 init .py文件中启动新线程?
答案 0 :(得分:0)
我也有这个问题。我建议创建一个admin-command并在一个单独的容器中运行此命令,一个容器运行服务器,另一个运行WebSocket。在这种情况下,你有Django的上下文允许你使用Django-ORM或设置,而docker将负责进程管理,如果你使用线程,这将是复杂的。