【问题标题】:Tornado Lookup Error: unknown encoding: latin1Tornado 查找错误:未知编码:latin1
【发布时间】:2012-08-14 22:26:29
【问题描述】:

我正在尝试对使用 tornado.httpserver 制作的简单 Tornado 服务器进行基准测试,但在 Solaris 机器上使用具有 1000 个或更多并发连接的 apache bench 时出现以下错误。

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/tornado-2.3-py2.7.egg/tornado/iostream.py", line 304, in wrapper
  File "/usr/local/lib/python2.7/site-packages/tornado-2.3-py2.7.egg/tornado/httpserver.py", line 227, in _on_headers
LookupError: unknown encoding: latin1

我相信这是由于竞态条件导致 python 编解码器表处于无效状态。我的理解是 latin1 包含在 python 标准库中,所以只要没有修改 python 编解码器表,它就应该存在。

我查看了 tornado src,它似乎没有修改编解码器表,所以我想知道是否有人知道其他方法或问题可能会在多进程 python 应用程序中导致此问题或类似问题。

谢谢!!

服务器代码链接:https://www.dropbox.com/s/xrgj59sv0y5y31n/server_ioloop.py

【问题讨论】:

  • 感谢您的链接,但是,启动该线程的人在 OSX Lion 上看到了同样的问题。我还用使用事件端口和 devpoll 的实现替换了默认的 ioloop 实现,并且仍然看到了这个问题,所以我认为这可能与在 solaris 上选择用尽文件描述符无关。
  • 我找到了解决此问题的以下解决方法。将 httpserver._on_headers 中的以下行从:data = native_str(data.decode('latin1')) 更改为 data = native_str(codecs.latin_1_decode(data)[0]) 解决了我的问题,但很高兴知道根本原因。

标签: python-2.7 tornado latin1


【解决方案1】:
import pandas as pd
import numpy as np
d = pd.read_csv('/content/zomato.csv',encoding='latin-1')
d.head(1)

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多