Подтвердить что ты не робот

Простая межпроцессная коммуникация

Я ищу простой способ передачи сообщений из одного процесса (Perl script, недолговечного) в другой (Python script, long-running) - оба процесса локальны для одного и того же компьютера. Я провел некоторое исследование, но то, что я нашел, было либо над моей головой, либо казалось излишне сложным - оставив меня немного потерянным и смущенным.

Я представляю минимальный пример примерно так:

# listener.py

class Listener:
    def __init__(self, port)
        self.port = port

    def on_message(self, msg):
        print "%s: %s" % (timestamp, msg)

recipient = Listener(1234)


# sender.pl

sub send_message {
    my ($msg, $port) = @_;
    # ...
}

send_message("hello world", 1234);

Любые указатели на то, как решать и/или где читать об этом, будут очень признательны!

4b9b3361

Ответ 1

В общем, вас интересуют сокеты. Хорошим местом для получения необходимой информации является документация IO:: Socket:: INET или более базовый сокет в perl от perldoc perlipc

Ответ 2

Оказывается, что межпроцессное общение, хотя на поверхности прямо, на самом деле чревато осложнениями. Независимо от того, что кто-либо говорит вам здесь об упрощенном ответе, всегда имейте в виду, что, вероятно, существует много предостережений, которые остаются недосказанными.

Теперь, когда это выражение об отказе от ответственности, я утверждаю, что то, что вы, скорее всего, хотите, - это очереди сообщений. Это основано на том факте, что вы не включили ip-адрес в свой пример api. Если вам нужно пройти через машины, вам понадобятся сокеты. Тем не менее, я думаю, вы найдете, что очереди сообщений проще понять, если вы можете иметь дело с тем, что это только для общения с процессами на одной машине.

Хорошей отправной точкой для perl является:
http://perldoc.perl.org/IPC/Msg.html

для python, это, кажется, объясняет (игнорируйте другие типы ipc, такие как семафоры):
http://semanchuk.com/philip/sysv_ipc/

Ответ 3

И для подключенных коммуникаций в том же стиле, что и сокет, подумайте о 0MQ. Он может использовать различные коммуникационные технологии в зависимости от того, где находятся ваши два приложения, и даже для локальных процессов он очень прост в использовании и решает проблемы для вас.

http://zeromq.org