def test_uwsgi_is_started(now): for i in range(1, 30): status = supervisor.process_status('uwsgi_{}'.format(now)) if status == 'RUNNING': break time.sleep(1) testing_file = '/tmp/test_uwsgi.py' if files.is_file(testing_file): files.remove(testing_file) put('files/test_uwsgi.py', '/tmp/') require.python.package('six', use_sudo=True) output = run('python {} {} {} aa'.format(testing_file, env.uwsgi_socket_api(now), '{}/ads/'.format(env.conf_api.SERVER_NAME))) assert '"message"' in output from test_api import test_api test_api(testing_file, env.uwsgi_socket_api(now), env.conf_api.SERVER_NAME)
def clean_directories(now): l = run('for i in {}/deployment_*; do echo $i; done'.format(env.deploy_dir)).split("\n") for d in [d.replace('\r', '') for d in l]: if not files.is_dir(d): continue if d == env.deployment_dir(now): continue files.remove(d, recursive=True) l = run('for i in {}/apitaxi_*; do echo $i; done'.format(env.uwsgi_socket_dir)).split("\n") for f in [f.replace('\r', '') for f in l]: if f == env.uwsgi_socket_api(now): continue files.remove(f, use_sudo=True)
def deploy_nginx_api_site(now): files.upload_template('templates/uwsgi.ini', env.uwsgi_api_config_path(now), context={ 'config_path': env.apitaxi_config_path(now), 'api_path': env.apitaxi_dir(now), 'venv_path': env.apitaxi_venv_path(now), 'uwsgi_file': env.uwsgi_api_file(now), 'uwsgi_pid_file': env.uwsgi_api_pid_file(now), 'uwsgi_log_file1': env.uwsgi_logdir + '/api_launcher.log', 'uwsgi_log_file2': env.uwsgi_logdir + '/api_uwsgi.log', 'uwsgi_launcher_logdir': env.uwsgi_launcher_logdir, 'socket': env.uwsgi_socket_api(now), 'processes': env.wsgi_processes, 'threads': env.wsgi_threads, 'now': now } ) files.upload_template('templates/uwsgi.ini', env.uwsgi_front_config_path(now), context={ 'config_path': env.fronttaxi_config_path(now), 'api_path': env.fronttaxi_dir(now), 'venv_path': env.apitaxi_venv_path(now), 'uwsgi_file': env.uwsgi_front_file(now), 'uwsgi_pid_file': env.uwsgi_front_pid_file(now), 'uwsgi_log_file1': env.uwsgi_logdir + '/front_launcher.log', 'uwsgi_log_file2': env.uwsgi_logdir + '/front_uwsgi.log', 'socket': env.uwsgi_socket_front(now), 'processes': env.wsgi_processes, 'threads': env.wsgi_threads, 'now': now } ) uwsgi = path.join(env.apitaxi_venv_path(now), 'bin', 'uwsgi') require.supervisor.process('uwsgi_api_{}'.format(now), command='{} --ini {}'.format(uwsgi, env.uwsgi_api_config_path(now)), directory=env.apitaxi_venv_path(now), stdout_logfile = '/var/log/nginx/apitaxi.log', user='******' ) require.supervisor.process('uwsgi_front_{}'.format(now), command='{} --ini {}'.format(uwsgi, env.uwsgi_front_config_path(now)), directory=env.apitaxi_venv_path(now), stdout_logfile = '/var/log/nginx/fronttaxi.log', user='******' ) test_uwsgi_is_started(now) celery = path.join(env.apitaxi_venv_path(now), 'bin', 'celery') worker_name = 'send_hail_{}'.format(now) command = '{} worker --app=celery_worker.celery -Q {} -n {} --workdir={}' require.supervisor.process(worker_name, command=command.format(celery, worker_name, worker_name, env.apitaxi_dir(now)), directory=env.apitaxi_dir(now), stdout_logfile='/var/log/celery/send_hail.log', user='******', environment='APITAXI_CONFIG_FILE=prod_settings.py' ) swagger_dir = install_swagger_ui() zupc_dir = install_zupc_cache() require.nginx.site('apitaxi', template_source='templates/nginx_site.conf', domain_name=getattr(env.conf_api, 'HOST', 'localhost'), env='NOW={}'.format(now), port=getattr(env.conf_api, 'PORT', 80), socket_api=env.uwsgi_socket_api(now), socket_front=env.uwsgi_socket_front(now), doc_dir=swagger_dir, zupc_cache_dir=zupc_dir ) path_redis = '{}/redis.sh'.format(env.deployment_dir(now)) require.files.template_file(path=path_redis, template_source='templates/redis.sh', context={'deployment_dir':env.deployment_dir(now)}, mode='770') require.supervisor.process('redis', command=path_redis, stdout_logfile='/var/log/redis/error.log' )