mirror of
https://github.com/ansible/awx.git
synced 2026-03-02 17:28:51 -03:30
Alternative code reloader for dev env
I verified what Seth found in https://github.com/ansible/awx/pull/12052, but would really hate to lose this functionality. Curious if folks on the API team can try this and see if it works for them.
This commit is contained in:
9
Makefile
9
Makefile
@@ -177,7 +177,7 @@ collectstatic:
|
|||||||
fi; \
|
fi; \
|
||||||
mkdir -p awx/public/static && $(PYTHON) manage.py collectstatic --clear --noinput > /dev/null 2>&1
|
mkdir -p awx/public/static && $(PYTHON) manage.py collectstatic --clear --noinput > /dev/null 2>&1
|
||||||
|
|
||||||
UWSGI_DEV_RELOAD_COMMAND ?= supervisorctl restart tower-processes:awx-dispatcher tower-processes:awx-receiver
|
DEV_RELOAD_COMMAND ?= supervisorctl restart tower-processes:*
|
||||||
|
|
||||||
uwsgi: collectstatic
|
uwsgi: collectstatic
|
||||||
@if [ "$(VENV_BASE)" ]; then \
|
@if [ "$(VENV_BASE)" ]; then \
|
||||||
@@ -192,12 +192,13 @@ uwsgi: collectstatic
|
|||||||
--processes=5 \
|
--processes=5 \
|
||||||
--harakiri=120 --master \
|
--harakiri=120 --master \
|
||||||
--no-orphans \
|
--no-orphans \
|
||||||
--py-autoreload 1 \
|
|
||||||
--max-requests=1000 \
|
--max-requests=1000 \
|
||||||
--stats /tmp/stats.socket \
|
--stats /tmp/stats.socket \
|
||||||
--lazy-apps \
|
--lazy-apps \
|
||||||
--logformat "%(addr) %(method) %(uri) - %(proto) %(status)" \
|
--logformat "%(addr) %(method) %(uri) - %(proto) %(status)"
|
||||||
--hook-accepting1="exec: $(UWSGI_DEV_RELOAD_COMMAND)"
|
|
||||||
|
awx-autoreload:
|
||||||
|
@/awx_devel/tools/docker-compose/awx-autoreload /awx_devel "$(DEV_RELOAD_COMMAND)"
|
||||||
|
|
||||||
daphne:
|
daphne:
|
||||||
@if [ "$(VENV_BASE)" ]; then \
|
@if [ "$(VENV_BASE)" ]; then \
|
||||||
|
|||||||
@@ -158,6 +158,8 @@ RUN pip3 install black git+https://github.com/coderanger/supervisor-stdout
|
|||||||
# It is nice to have in the dev env, but not necessary.
|
# It is nice to have in the dev env, but not necessary.
|
||||||
# Add it back to the list above if the repo ever straighten up.
|
# Add it back to the list above if the repo ever straighten up.
|
||||||
RUN dnf --enablerepo=baseos-debug -y install python3-debuginfo || :
|
RUN dnf --enablerepo=baseos-debug -y install python3-debuginfo || :
|
||||||
|
|
||||||
|
RUN dnf install -y epel-next-release && dnf install -y inotify-tools && dnf remove -y epel-next-release
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# Copy app from builder
|
# Copy app from builder
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ stderr_logfile_maxbytes=0
|
|||||||
command = make uwsgi
|
command = make uwsgi
|
||||||
directory = /awx_devel
|
directory = /awx_devel
|
||||||
environment =
|
environment =
|
||||||
UWSGI_DEV_RELOAD_COMMAND='supervisorctl -c /etc/supervisord_task.conf restart all; supervisorctl restart tower-processes:daphne tower-processes:wsbroadcast'
|
DEV_RELOAD_COMMAND='supervisorctl -c /etc/supervisord_task.conf restart all; supervisorctl restart tower-processes:daphne tower-processes:wsbroadcast'
|
||||||
{% else %}
|
{% else %}
|
||||||
command = /var/lib/awx/venv/awx/bin/uwsgi /etc/tower/uwsgi.ini
|
command = /var/lib/awx/venv/awx/bin/uwsgi /etc/tower/uwsgi.ini
|
||||||
directory = /var/lib/awx
|
directory = /var/lib/awx
|
||||||
|
|||||||
15
tools/docker-compose/awx-autoreload
Executable file
15
tools/docker-compose/awx-autoreload
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/env bash
|
||||||
|
|
||||||
|
if [ $# -lt 2 ]; then
|
||||||
|
echo "Usage:"
|
||||||
|
echo " autoreload directory command"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
inotifywait -mrq -e create,delete,attrib,close_write,move --exclude '/awx_devel/awx/ui' $1 | while read directory action file; do
|
||||||
|
if [[ "$file" =~ .*py$ ]]; then
|
||||||
|
echo "File changed: $file"
|
||||||
|
echo "Running command: $2"
|
||||||
|
eval $2
|
||||||
|
fi
|
||||||
|
done
|
||||||
@@ -95,6 +95,20 @@ stderr_logfile_maxbytes=0
|
|||||||
programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsbroadcast,awx-rsyslogd
|
programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsbroadcast,awx-rsyslogd
|
||||||
priority=5
|
priority=5
|
||||||
|
|
||||||
|
[program:awx-autoreload]
|
||||||
|
command = make awx-autoreload
|
||||||
|
autostart = true
|
||||||
|
autorestart = true
|
||||||
|
startsecs = 30
|
||||||
|
stopasgroup=true
|
||||||
|
killasgroup=true
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
stdout_events_enabled = true
|
||||||
|
stderr_events_enabled = true
|
||||||
|
|
||||||
[eventlistener:superwatcher]
|
[eventlistener:superwatcher]
|
||||||
command=stop-supervisor
|
command=stop-supervisor
|
||||||
events=PROCESS_STATE_FATAL
|
events=PROCESS_STATE_FATAL
|
||||||
|
|||||||
Reference in New Issue
Block a user