gpt4 book ai didi

python - 从非 uwsgi 进程与 uwsgi RPC 应用程序对话

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:21 27 4
gpt4 key购买 nike

我们有一个工作的 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 - 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()

最佳答案

您需要将 header 与正文分开发送,并且函数+参数的长度需要是小端字节序。

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

关于python - 从非 uwsgi 进程与 uwsgi RPC 应用程序对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com