У нас есть рабочий сервер uwsgi с некоторыми вызовами RPC (Примечание: мы можем использовать uwsgi.rpc для общения с процессами, поэтому настройка на их конце хороша). Мы обнаружили, что у нас есть некоторые процессы, которые не работают под управлением uwsgi, которые мы хотим поговорить с серверами RPC. Глядя на источнике uwsgi, похоже, она должна быть относительно легко общаться с процессом питона не отстает uwsgi, но все мы можем получить это:Поговорите с uwsgi RPC-приложением из процесса uwsgi
read(): Resource temporarily unavailable [proto/uwsgi.c line 75]
Fri Apr 12 15:21:07 2013 - error parsing request
Вот код, который мы используем , Я думаю, что это упаковывает данные правильно, но я не знаю, почему это не работает:
import socket
from struct import pack
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(('127.0.0.1', 3035))
fun = 'test_fun'
arg = 'hi'
ulen = len(fun)
arglen = len(arg)
buflen = (2 + ulen) + (2 + arglen)
buf = pack('!B', 173)
buf += pack('!H', buflen)
buf += pack('!B', 0)
buf += pack('!B', ulen & 0xff)
buf += pack('!B', (ulen>>8) & 0xff)
buf += fun
buf += pack('!B', arglen & 0xff)
buf += pack('!B', (arglen>>8) & 0xff)
buf += arg
sent = c.send(buf)
c.close()
По какой-либо причине вы не просто используете библиотеку uwsgi? http://projects.unbit.it/uwsgi/wiki/RPC – Wolph
Мы используем потребителей повсюду. Похоже, мы могли бы использовать uwsgi, но нам нужно было бы добавить некоторые плагины (https://github.com/unbit/uwsgi/issues/29), и единственное, что нам нужно для uwsgi, это отправить запросы RPC, так что похоже overkill. –