2012-12-13 1 views
1

Как запустить скрипт python на сервере A, который может добавлять записи в элемент списка в другом скрипте python на сервере B? (Нужно быть гиперэффективным.)Добавить элемент в список в скрипте python на другом сервере

Есть ли какие-либо простые решения (или модули), которые помогают с этим?

Благодаря

+0

'multiprocessing' поддерживает связь с удаленными машинами. Вы также можете настроить интерфейс REST или что-то подобное на сервере B. –

+2

или http://docs.python.org/2/library/simplexmlrpcserver.html –

ответ

4

Я использую XMLRPCLIB для вызова функций удаленно. Сделайте функцию, добавляющую значения в глобальный массив, затем зарегистрируйте функцию с помощью xmlrpclib и вызовите ее с машины B.

Это довольно прост в использовании. Вот хорошая отправная точка: http://docs.python.org/2/library/xmlrpclib.html#boolean-objects

Сделано пример:

#!/usr/bin/python 
from SimpleXMLRPCServer import SimpleXMLRPCServer 
import xmlrpclib 

arrayToAppend = [] 

def appendArray(value): 
    global arrayToAppend 
    arrayToAppend.append(value) 
    return 1 

def valueOfArray(): 
    return arrayToAppend 

server = SimpleXMLRPCServer(("localhost", 8000)) 
print "Listening on port 8000..." 
server.register_function(appendArray, "appendArray") 
server.register_function(valueOfArray, "valueOfArray") 
server.serve_forever() 

Тогда тест/использовать его как так

>>> import xmlrpclib 
>>> p = xmlrpclib.Server("http://localhost:8000") 
>>> p.appendArray("test1") 
1 
>>> p.valueOfArray() 
['test1'] 
>>> p.appendArray("test2") 
1 
>>> p.valueOfArray() 
['test1','test2'] 
>>> 
+0

Спасибо, кажется достаточно простым. В случае 500 записей в секунду любые проблемы с производительностью с xmlrpclib? Также рассматривал httpserver Tornado, но, возможно, это просто смешно? ;) Спасибо за ввод. – knutole

+0

Будет ли код клиентской стороны блокироваться, кстати? Как я могу сделать это асинхронно? – knutole

+0

Я никогда не забивал это так. Не знаете, как это будет работать. Я бы определенно был бы заинтересован в результатах, если бы вы были так любезны, чтобы опубликовать то, что находите. Что касается асинхронно, если я понимаю цель, я бы рассмотрел многопоточный механизм очередей для клиентской стороны. http://docs.python.org/2/library/queue.html является потокобезопасным, поэтому я бы начал там. – Gripp

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