PythonStock(19):使用supervisor做docker的ENTRYPOINT切入点启动

时间:2021-11-15 16:18:16

关于


使用Python开发一个股票项目。
项目地址:
https://github.com/pythonstock/stock
相关资料:
http://blog.csdn.net/freewebsys/article/details/78294566
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/79040363
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于supervisor


Supervisor 是一个客户端服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数。
官方网站:
http://supervisord.org/

2,安装


目前的版本只有支持python2.7 的。

# pip install supervisor

然后就可以使用了。

3,配置文件supervisord.conf


配置文件:supervisord.conf
一般配置:

[unix_http_server]
file=/tmp/supervisor.sock ; the path to the socket file

[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)

[supervisord]
logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
loglevel=info ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false ; start in foreground if true; default false
minfds=1024 ; min. avail startup file descriptors; default 1024
minprocs=200 ; min. avail process descriptors;default 200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket

在stock股票系统中将之前的任务都放到supervisor。

[program:tensorboard]
command=/usr/local/bin/tensorboard --logdir=/data/logs/tensorflow
autostart=true
autorestart=true
startsecs=20
priority=1
stopasgroup=true
killasgroup=true

[program:stock-web]
command=/usr/bin/python /data/stock/web/main.py
autostart=true
autorestart=true
startsecs=20
priority=1
stopasgroup=true
killasgroup=true

[program:jupyter]
command=/usr/local/bin/jupyter notebook --allow-root --NotebookApp.token='' --notebook-dir=/data/notebooks
autostart=true
autorestart=true
startsecs=20
priority=1
stopasgroup=true
killasgroup=true

[program:init_and_cron]
command=/data/stock/jobs/run_init.sh
autostart=true
autorestart=true
startsecs=20
priority=1
stopasgroup=true
killasgroup=true

supervisor 有个特点,只能抓在前台启动的程序。不能让程序进入后台。
同时要是这个程序死了,会重新给拉起来。

监控画面:
PythonStock(19):使用supervisor做docker的ENTRYPOINT切入点启动

启动之后股票系统的几个任务就好啦。
使用cron 跑数据:

# crontab -l
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * /bin/run-parts /etc/cron.minutely
10 * * * * /bin/run-parts /etc/cron.hourly
20 16 * * * /bin/run-parts /etc/cron.daily
30 17 1,10,20 * * /bin/run-parts /etc/cron.monthly

web系统:
PythonStock(19):使用supervisor做docker的ENTRYPOINT切入点启动

jupyter:
PythonStock(19):使用supervisor做docker的ENTRYPOINT切入点启动

tensorBoard:
PythonStock(19):使用supervisor做docker的ENTRYPOINT切入点启动

4,总结


之前是使用的一个shell 脚本启动放到后台
nohup /bin/sh /data/stock/jobs/run_init.sh 2>&1 &
现在讲这个都放入到supervisor当中,得到了好的监控,同时如果因为程序负载过高。
有问题之后能重新把程序拉起来,特别的方便,以后再加入新程序的时候方便多了。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/79040363
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys