2015-09-07 2 views
0

У меня есть два Twitter Streaming APIs, работающих на машине, оба из которых являются python процессов и работает на supervisor. Я хочу создать контроллер, который может, по команде, остановить/запустить/перезапустить два процесса.Пульт дистанционного управления для процессов python

Один из способов заключается в том, чтобы веб-API был открыт на этой машине и ударил этот URL-адрес всякий раз, когда требуется изменение состояния. Он может использовать subprocess для перезапуска Supervisord.

Я читал Pyro, и это, казалось, было решением, которое устранило бы потребность в системе API на вышеуказанном шаге.

Все, что у меня отсутствует, или любое другое решение, которое является обновлением на этих двух?

ответ

1

Я уверен, что руководитель может сделать это для вас, проверить это

http://supervisord.org/api.html

Supervisor включают XML-RPC, чтобы контролировать процессы под ним, вам просто нужно настроить. Посмотрите на документацию и на этом руководстве

http://devo.ps/blog/using-supervisord-for-your-deploy-pipelines/

Он настроить интерфейс RPC там

0

Как вы упоминаете, я подвергнет REST API с помощью CherryPy работает как демон. Это проще и единственное, что вам нужно для контроля - это запрос. Вы можете добавить параметры, а затем более богатые с другим запросом, если хотите. Кроме того, вы можете использовать его в Windows в качестве службы Windows. https://cherrypy.readthedocs.org/en/3.2.6/refman/process/plugins/daemonizer.html

0

Инструменты управления кластерами идеально подходят для использования в таком случае. Преимущество, которое вы получаете, заключается в том, что решение будет работать даже при наличии нескольких машин. Проверить анзибль супервизор плагин, например: http://docs.ansible.com/ansible/supervisorctl_module.html

Вы бы только выполнить команду с удаленного компьютера под управлением анзибль и так как это Безагентное он будет заботиться об остальном. См. Ниже пьесу, которую я написал для чего-то подобного:

--- 
    - hosts: webservers 
     user: admin 
     sudo: yes 
     sudo_user: root 
     vars: 
     node_env: "{{ DEPLOY_ENV|default(staging) }}" 
     vars_files: 
     - ../vars/secret 
     - ../vars/main.yml 
     - ../defaults/main.yml 

     tasks: 

     # Manage Supervisor web tasks - restart them in a specific order 
     - name: Restart Data API supervisor Job 
     supervisorctl: name="web:data_api" state=restarted 
     - name: Restart Data API-2 supervisor Job 
     supervisorctl: name="web:data_api2" state=restarted 

     handlers: 
     - name: test all 
     shell: source /etc/profile.d/go-api.sh && source /etc/profile.d/go-path.sh && source /etc/profile.d/go-bin.sh && cd /opt/go/src/github.com/pgaref/data_api && go test . ./... executable=/bin/bash 
     shell: source /etc/profile.d/go-api.sh && source /etc/profile.d/go-path.sh && source /etc/profile.d/go-bin.sh && cd /opt/go/src/github.com/pgaref/data_api2 && go test . ./... executable=/bin/bash 
Смежные вопросы