いくつかの RPC 呼び出しを備えた動作中の uwsgi サーバーがあります (注: uwsgi.rpc を使用してプロセスと通信できるため、プロセス側のセットアップは良好です)。RPC サーバーと通信したい uwsgi の下で実行されていないプロセスがいくつかあることがわかりました。uwsgi のソースを見ると、uwsgi の背後で実行されていない Python プロセスから通信するのは比較的簡単なはずですが、取得できるのは次のとおりです。
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()