Привет, пытаюсь написать ресивер для гитовских веб хуков.
Все отлично, но в конце мне надо выполнить команду git pull.
И все работает когда скрипт запущен руками, но когда он запущен из под uwsgi , то все.
Если я использую gitpython, то на uwsgi он выдает fatal: unable to fork Если я использую Popen, то при запуске через uwsgi в stdout тишина и ничего не происходит. но при запуске с консоли все работает.
...
pullcmd = ["/usr/bin/git","--git-dir=/var/www/test-repo/.git,"--work-tree=/var/www/test-repo/","pull"]
p = subprocess.Popen(pullcmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(p.stdout.readline())
print(p.stderr.readline())
logging.info(p.stdout.readline())
logging.info(p.stderr.readline())
# or with gitpython
#g = git.cmd.Git(git_dir)
#try:
# g.pull()
#except git.exc.CommandError as e:
#print(e)
# return json.dumps({'status': str(e)}) , 500
cat app.ini
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = /tmp/webhook.sock
chmod-socket = 660
vacuum = true
die-on-term = true
cat wsgi.py
#!/usr/bin/env python3
from webhook import app
if __name__ == "__main__":
app.run()
cat /etc/systemd/system/webhook.service
[Unit]
Description=uWSGI instance webhook
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/opt/webhook
Environment="PATH=/opt/webhook/env/bin"
#Environment="GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git"
ExecStart=/opt/webhook/env/bin/uwsgi --ini /opt/webhook/app.ini
#ExecStart=/usr/bin/uwsgi --ini /opt/webhook/app.ini
[Install]
WantedBy=multi-user.target