Thrift python 3.4 TypeError:需要字符串参数,得到“字节”

2024-01-08

我正在尝试阿帕奇节俭 https://thrift.apache.org/使用 Thrift 似乎支持的 python 3.4,因为它有lib.linux-x86_64-3.4 under build目录。但我不断收到此错误消息

  File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/transport/TTransport.py", line 163, in write
self.__wbuf.write(buf)
TypeError: string argument expected, got 'bytes'

有人知道发生了什么事,并且可能有解决方案吗?

下面是相关代码

socket = TSocket.TSocket('localhost', 9090)
transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)

client = Algo.Client(protocol)
transport.open()
ping_req = PingRequest()
ping_resp = client.ping(ping_req)

整个回溯:

  File "py3client.py", line 36, in <module>
    ping_resp = client.ping(ping_req)
  File "/home/qunzi/Projects/test/sample_Test/py3.4_thrift/ib/Algo.py", line 66, in ping
    self.send_ping(request)
  File "/home/qunzi/Projects/test/sample_Test/py3.4_thrift/ib/Algo.py", line 70, in send_ping
    self._oprot.writeMessageBegin('ping', TMessageType.CALL, self._seqid)
  File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/protocol/TBinaryProtocol.py", line 46, in writeMessageBegin
    self.writeI32(TBinaryProtocol.VERSION_1 | type)
  File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/protocol/TBinaryProtocol.py", line 111, in writeI32
    self.trans.write(buff)
  File "/home/qunzi/Downloads/thrift-0.9.2/lib/py/build/lib.linux-x86_64-3.4/thrift/transport/TTransport.py", line 163, in write
    self.__wbuf.write(buf)
TypeError: string argument expected, got 'bytes'

虽然这个问题相当死,但看起来我有答案了:)

thrift 当前的 python 生成器(从 0.9.3 开始)生成特定于 python2 的代码。至少我刚刚切换了齿轮和代码,这给了我同样的错误,现在就像魅力一样。

该错误是由于(隐式)将库中所有类似字符串的对象视为字节对象而引起的。然而,在 Python3 StringIO 类中需要面向字符的字符串(str) 和那些面向字节的字符串会导致异常。

人们应该向 Thrift 跟踪器提交一个错误,现在他/她应该使用 Python2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thrift python 3.4 TypeError:需要字符串参数,得到“字节” 的相关文章

随机推荐

  • PHP PDO 事务复制

    我有一个游戏网站 我想更新用户的钱 但是如果我同时使用 2 台电脑 此代码将执行两次 用户将剩下负钱 我怎样才能阻止这种情况发生 这让我疯狂 db getDB sql UPDATE users SET money money money W
  • 如何将 npm 参数传递给 dotnetpublish?

    长话短说 私有 npm 注册表 企业网络 无法从 github 下载 我需要通过 no optional to the npm install that dotnet publish 作为一部分执行 Target PublishRunWeb
  • 在 ajaxSuccess 期间确定响应是否为 JSON 的理想方法

    在我的 ajaxSucess 函数中 我需要查明响应是否为 json 目前我正在这样做 body ajaxSuccess function evt xhr settings var contType xhr getAllResponseHe
  • 在 Internet Explorer 中运行本地“Javascript Dependant”HTML 文件

    当您使用 Internet Explorer 打开本地 HTML 文件 包含 Javascript 时 会出现一条消息 Internet Explorer restricted this webpage from running scrip
  • 该领域已处于写入事务中

    该领域已处于写入事务中 我怎样才能避免这个错误 有没有办法检查领域是否处于写入牵引状态 如果领域处于写事务中 则先关闭 然后再执行其他工作 现在 在收到此错误后 该领域已处于写入事务中 那么与领域相关的其他任务也无法正常工作 这是我遇到的一
  • 什么决定了 System.Net.IPAddress.ToString() 的 IPv6 地址格式?

    内置 Net 方法 System Net IPAddress ToString 对于 IPv6 地址的行为不一致 给定字节数组0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 在某些环境下 aaaa aaaa aaaa
  • 如何更改 localStorage 项中的单个值?

    我有一组已保存的项目 但我试图在检索它之后并将其传递给我的 php 函数之前更改一个值 是否可以只更改一项 我的项目串如下所示 var args window localStorage getItem localusers start 0
  • 动画 SVG 路径填充自下而上

    我有一个带有多个路径的 SVG 我正在尝试对其填充进行动画处理 我的目标是制作一个动画 从下到上缓慢地填充每个路径中不同颜色的颜色 我尝试过使用线性渐变 但不知道如何将它与路径一起使用 我创建了以下 SVG https jsfiddle n
  • 如何重用带参数的 SQL 片段?

    我打算制作一个片段以便与参数一起重用
  • Visual Studio 中的项目目录结构丢失了?

    我正在学习 Visual Studio 2015 社区 我是一位经验丰富的程序员 但刚接触 VS 文件表示方式让我感到困惑 我创建了一个解决方案 并添加了一个现有项目 VS 正在向我显示所有项目文件 在我的例子中是一个 C 项目 所以 c
  • 如何按需启用 javax.net.debug

    我们的应用程序使用 Apache HttpClient 4 5 3 我们观察到客户端和服务器之间使用 SNI 功能进行通信的非常奇怪的行为 服务器配置为如果 SSL 请求带有我们客户端期望的服务器名称 即 服务器的主机名 则返回 GoDad
  • 仅列出城市名称 Geocomplete.js 或 Google 位置自动完成

    我只想使用 Geocomplete js 显示城市名称 我已将搜索限制为仅显示城市 但它最后仍然显示国家名称 美国 我想摆脱它 有任何建议请 Thanks 很高兴我终于找到了 geocomplete js 的解决方案 希望它对某人有用 解决
  • 不允许在 Web 线程上使用多个锁!请提交错误。现在崩溃了

    我发出一个 url 请求并等待答案 我启动请求 然后等待直到 synchronousOperationComplete TRUE NSRunLoop theRL NSRunLoop currentRunLoop while synchron
  • 如何在MPandroidchart库中使用图标作为饼图的标签

    我正在使用 mpandroidchart 库来构建饼图 饼图的要求是每个条目中都应包含图标 In my case it is showing up the percentage of each entry values 有什么办法可以将标签
  • node.js - ReferenceError:导航器未定义

    我越来越ReferenceError 导航器未定义在node js上运行以下代码 navigator geolocation getCurrentPosition data gt console log data 我认为问题在于导航器 地理
  • 灯箱图片下载

    我在多个图片库中使用 Lightbox 2 我想为我的用户提供一种在灯箱中查看图像时下载图库中的图像的方法 如果有一个 下载 按钮就完美了 我把它想象在标题附近 问题是我对Javascript很烂 这个项目是一个不经常使用的内部工具 我自愿
  • Bokeh:将变量传递给小部件的 CustomJS

    Bokeh 的一个好处是 可以从 Python 层指定回调 从而在 javascript 级别上产生操作 而无需 bokeh 服务器 因此 人们可以创建在浏览器中运行的交互式小部件 而无需运行 Ipython 或 Bokeh 服务器 0 9
  • 如何从 Pandas 字典中存在的数据框列中删除单词

    扩展至 从字符串中删除单词列表 https stackoverflow com questions 25346058 removing list of words from a string 我有以下数据框 我想从 df name 列中删除
  • MongoDB 嵌入式集合的首选模式。文档与数组

    我相信至少有两种方法可以在 mongodb 文档中嵌入数据 在一个简化的情况下 我们可以有这样的东西 name bill lines idk73716 name Line A idk51232 name Line B idk23321 na
  • Thrift python 3.4 TypeError:需要字符串参数,得到“字节”

    我正在尝试阿帕奇节俭 https thrift apache org 使用 Thrift 似乎支持的 python 3 4 因为它有lib linux x86 64 3 4 under build目录 但我不断收到此错误消息 File ho