remove celery; implement mainloop and supervisord connection; add dockerfile
This commit is contained in:
		
							parent
							
								
									2e0d3ed780
								
							
						
					
					
						commit
						019a17ae98
					
				| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					FROM python:3.8-alpine
 | 
				
			||||||
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# set env
 | 
				
			||||||
 | 
					ENV PYTHONDONTWRITEBYTECODE 1
 | 
				
			||||||
 | 
					ENV PYTHONUNBUFFERED 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# install required packages
 | 
				
			||||||
 | 
					RUN  pip install -U supervisor \
 | 
				
			||||||
 | 
					  && mkdir -p /var/log/supervisor \
 | 
				
			||||||
 | 
					  && apk add --no-cache ffmpeg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# install dependencies
 | 
				
			||||||
 | 
					ADD ./requirements.txt /app/requirements.txt
 | 
				
			||||||
 | 
					RUN pip install -r requirements.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# add user
 | 
				
			||||||
 | 
					RUN addgroup -S concierge && adduser -S concierge -G concierge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# add code
 | 
				
			||||||
 | 
					ADD . /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# aaaaand go!
 | 
				
			||||||
 | 
					CMD ["/usr/local/bin/supervisord", "-c","/app/supervisord.conf"]
 | 
				
			||||||
							
								
								
									
										43
									
								
								main.py
								
								
								
								
							
							
						
						
									
										43
									
								
								main.py
								
								
								
								
							| 
						 | 
					@ -1,17 +1,36 @@
 | 
				
			||||||
from celery import Celery
 | 
					import os
 | 
				
			||||||
 | 
					import signal
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# supervisord xml-rpc connection
 | 
				
			||||||
from xmlrpc.client import ServerProxy
 | 
					from xmlrpc.client import ServerProxy
 | 
				
			||||||
 | 
					svd = ServerProxy('http://127.0.0.1:9001/RPC2')
 | 
				
			||||||
server = ServerProxy('http://localhost:9001/RPC2')
 | 
					identity = os.environ.get('CONCIERGE_IDENTITY', default="develop")
 | 
				
			||||||
app = Celery('tasks', broker='redis://localhost')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
print(server.supervisor.getState())
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@app.task
 | 
					def sigterm_handler(signum, frame):
 | 
				
			||||||
def start_restream(name):
 | 
					    print("concierge shutting down.")
 | 
				
			||||||
    print(name)
 | 
					    # if concierge dies, all tasks need to die as well!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sys.exit(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@app.task
 | 
					def loop(config):
 | 
				
			||||||
def stop_restream(name):
 | 
					    while True:
 | 
				
			||||||
    print(name)
 | 
					        # do stuff
 | 
				
			||||||
 | 
					        print(svd.supervisor.getAllProcessInfo())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        time.sleep(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main():
 | 
				
			||||||
 | 
					    # program setup
 | 
				
			||||||
 | 
					    signal.signal(signal.SIGTERM, sigterm_handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # check connection to supervisord
 | 
				
			||||||
 | 
					    print(svd.supervisor.getState())
 | 
				
			||||||
 | 
					    loop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1 +1,2 @@
 | 
				
			||||||
celery>=4.4
 | 
					celery>=4.4
 | 
				
			||||||
 | 
					redis
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
[flake8]
 | 
					[flake8]
 | 
				
			||||||
exclude = .git,*migrations*
 | 
					exclude = .git
 | 
				
			||||||
max-line-length = 120
 | 
					max-line-length = 120
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					[supervisord]
 | 
				
			||||||
 | 
					logfile=/var/log/supervisord.log ; (main log file;default $CWD/supervisord.log)
 | 
				
			||||||
 | 
					logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
 | 
				
			||||||
 | 
					logfile_backups=10           ; (num of main logfile rotation backups;default 10)
 | 
				
			||||||
 | 
					loglevel=info                ; (log level;default info; others: debug,warn,trace)
 | 
				
			||||||
 | 
					nodaemon=true                ; (start in foreground if true;default false)
 | 
				
			||||||
 | 
					user=root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[inet_http_server]
 | 
				
			||||||
 | 
					port=127.0.0.1:9001
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[rpcinterface:supervisor]
 | 
				
			||||||
 | 
					supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[program:concierge]
 | 
				
			||||||
 | 
					directory=/app
 | 
				
			||||||
 | 
					command=/usr/local/bin/python main.py
 | 
				
			||||||
 | 
					autostart=true
 | 
				
			||||||
 | 
					autorestart=true
 | 
				
			||||||
 | 
					priority=5
 | 
				
			||||||
 | 
					stdout_events_enabled=true
 | 
				
			||||||
 | 
					stderr_events_enabled=true
 | 
				
			||||||
 | 
					stderr_logfile=/dev/stderr
 | 
				
			||||||
 | 
					stderr_logfile_maxbytes=0
 | 
				
			||||||
 | 
					stdout_logfile=/dev/stdout
 | 
				
			||||||
 | 
					stdout_logfile_maxbytes=0
 | 
				
			||||||
 | 
					user=concierge
 | 
				
			||||||
		Loading…
	
		Reference in New Issue