Я запускаю флешку через uwsgi и nginix в Ubuntu, как описано в этой статье .В соответствии с этой статьей я использую virtualenv.У меня все работает, но я сталкиваюсь с проблемой с git pull
, которую должен выполнять мой сценарий:
Nov 26 19:07:42 airflow-server uwsgi[18636]: Handling change to seer
Nov 26 19:07:42 airflow-server uwsgi[18636]: echo $PATH: b'/home/engineering/github_webhook_endpoint/github_webhook_endpointenv/bin\n'
Nov 26 19:07:42 airflow-server uwsgi[18636]: Fetching origin
Nov 26 19:07:42 airflow-server uwsgi[18636]: error: cannot run ssh: No such file or directory
Nov 26 19:07:42 airflow-server uwsgi[18636]: fatal: unable to fork
Nov 26 19:07:42 airflow-server uwsgi[18636]: error: Could not fetch origin
Nov 26 19:07:42 airflow-server uwsgi[18636]: Successfully git pull'd at /home/engineering/seer
Сценарий:
from flask import Flask, request
from pathlib import Path
import os
import json
import requests
import subprocess
local_dir = '/home/engineering'
application = Flask(__name__)
def handle_request(data):
repo_name = data['repository']['name']
local_repos = [x.name for x in Path(local_dir).iterdir()]
print(f'Handling change to {repo_name}')
if repo_name in local_repos:
print('echo $PATH:', subprocess.check_output("echo $PATH",shell=True))
os.system(f'cd {local_dir}/{repo_name} && /usr/bin/git fetch --all && /usr/bin/git reset --hard origin/master')
print(f'Successfully git pull\'d at {local_dir}/{repo_name}')
else:
print(f'No such repo at {local_dir}/{repo_name}')
@application.route('/',methods=['POST'])
def foo():
data = json.loads(request.data)
handle_request(data)
return 'OK'
if __name__ == '__main__':
application.run(host='0.0.0.0')
I 'Я пытался найти решения в Интернете, но ни одна из них, похоже, не написана для моей конкретной проблемы, и я ничего не понимаю.У меня есть SSH-ключи, которые git использует в моем обычном окружении, но я не уверен, как «сказать» git использовать их в этом virtualenv.