2009-04-23 2 views
0

Проблема:Общаясь с сервисом Python

У меня есть сценарий питона, который я работает в качестве службы. Это подкласс класса win32 win32serviceutil.ServiceFramework. Я хочу простой простой способ отправки произвольных команд ему через командную строку.

То, что я смотрел на:

Это выглядит как стандартный способ управления услугой, как только он начал это с помощью другой программы и посылая ему командные сигналы, но мне нужно, чтобы иметь возможность отправить короткая строка, а также аргумент. Похоже, что использование NamedPipe может быть хорошей идеей, но это слишком сложно для того, что я хотел сделать, есть ли другой более простой способ?

ответ

2

Не совсем.

У вас есть много, много способов сделать «Interprocess Communication» (IPC) в Python.

  • Sockets

  • Named Pipes (см http://developers.sun.com/solaris/articles/named_pipes.html) - она ​​включает в себя немного OS магии, чтобы создать, но тогда это просто файл, который вы читать и писать.

  • Общая память (см. http://en.wikipedia.org/wiki/Shared_memory) - это также включает в себя достаточное количество магии уровня ОС.

  • Semphores and Locks; files with locks может хорошо работать для IPC.

  • протоколы более высокого уровня, построенные на патрубках ...

    • HTTP; вот что такое WSGI.

    • FTP

    • т.д.

Обычным решением является использование HTTP и определение "RESTful" команды. Ваша служба прослушивает порт 80 для HTTP-запросов, содержащих аргументы и параметры. Посмотрите на wsgiref для получения дополнительной информации.

+0

Спасибо. Это то, чем я занимался в своих исследованиях. Я думаю, что я собираюсь закончить с NamedPipes. – Robbie

+0

Мы используем WSGI, потому что - в целом - это очень, очень просто реализовать с помощью библиотеки wsgiref. Наши клиенты используют urllib2 для запросов. –

Смежные вопросы