Python 从非uwsgi进程与uwsgi RPC应用程序对话
我们有一个工作的uwsgi服务器,带有一些RPC调用(注意:我们可以使用uwsgi.RPC与进程对话,因此进程端的设置很好)。我们发现有些进程不在uwsgi下运行,我们希望与RPC服务器进行对话。从uwsgi源代码来看,从一个不在uwsgi后面运行的python进程进行通信似乎相对容易,但我们所能得到的只是:Python 从非uwsgi进程与uwsgi RPC应用程序对话,python,rpc,uwsgi,Python,Rpc,Uwsgi,我们有一个工作的uwsgi服务器,带有一些RPC调用(注意:我们可以使用uwsgi.RPC与进程对话,因此进程端的设置很好)。我们发现有些进程不在uwsgi下运行,我们希望与RPC服务器进行对话。从uwsgi源代码来看,从一个不在uwsgi后面运行的python进程进行通信似乎相对容易,但我们所能得到的只是: read(): Resource temporarily unavailable [proto/uwsgi.c line 75] Fri Apr 12 15:21:07 2013 - er
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()
您需要将标题与正文分开发送,并且函数+参数的长度需要是小尾端
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)
c.send(buf)
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)
print "sent", sent
fun='test\u fun'
arg='hi'
ulen=len(有趣)
arglen=len(arg)
buflen=(2+ulen)+(2+arglen)
buf=包装('!B',173)
buf+=pack(“您需要将标题与正文分开发送,并且函数+参数的长度需要是小尾端
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)
c.send(buf)
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)
print "sent", sent
fun='test\u fun'
arg='hi'
ulen=len(有趣)
arglen=len(arg)
buflen=(2+ulen)+(2+arglen)
buf=包装('!B',173)
buf+=pack('你为什么不使用uwsgi库?我们到处都在使用消费者。看起来我们可以使用uwsgi,但我们必须添加一些插件()我们需要uwsgi的唯一目的是发送RPC请求,所以这似乎是过度杀戮。你为什么不使用uwsgi库?我们到处都在使用消费者。看起来我们可以使用uwsgi,但我们必须添加一些插件(),我们需要uwsgi的唯一目的是发送RPC请求,所以这似乎是过度杀戮。