socket.py line224 in meth return getattr(self._sock, name)(*args) error:[Error 2] No such file or di

最近在使用socket 的queue获取队列时,出现如下错误:

反正中间各种折腾,最后发现是个配置错误。。。

在main()函数中使用下面两行实例了一个socket

sockets = tornado.netutil.bind_sockets(config.PORT, config.HOST)
tornado.process.fork_processes(config.ProcessNum)

这里的配置错误就是config里面配置的HOST必须是本机ip地址

无需多言。。。我也不清楚为啥要求这样,应该需要看看源码吧。。。

 

这段代码定义了一个名为`iStr`的自定义字符串类,它是对内置字符串类`str`的扩展,实现了不区分大小写的字符串比较和操作。 让我们逐句逐行详细解释代码: ```python class iStr(str): ``` 这段代码定义了一个名为`iStr`的类,它继承自内置字符串类`str`。 ```python def __init__(self, *args): self.lowered = str.lower(self) ``` 这是`iStr`类的初始化方法。它接受任意数量的参数,并将调用内置字符串类的`lower`方法将字符串转换为小写形式,并将结果存储在实例变量`lowered`中。 ```python def __repr__(self): return '%s(%s)' % (type(self).__name__, str.__repr__(self)) ``` 这是`iStr`类的字符串表示方法。它返回一个表示该实例的字符串,格式为类名加上原始字符串的表示形式。 ```python def __hash__(self): return hash(self._lowered) ``` 这是`iStr`类的哈希方法。它返回实例的哈希值,使用小写形式的字符串进行哈希运算。 ```python def lower(self): return self._lowered ``` 这是`iStr`类的`lower`方法。它返回实例的小写形式字符串。 ```python def _make_case_insensitive(name): str_meth = getattr(str, name) def x(self, other, *args): try: other = other.lower() except (TypeError, AttributeError, ValueError): pass return str_meth(self._lowered, other, *args) setattr(iStr, name, x) ``` 这是一个辅助函数`_make_case_insensitive`,它用于创建不区分大小写的字符串操作方法。它接受一个字符串方法的名称作为参数。 在函数内部,首先使用`getattr`函数获取内置字符串类`str`中的对应方法。 然后,定义了一个名为`x`的内部函数,它接受实例`self`、其他参数`other`和任意数量的额外参数。在函数内部,尝试将`other`转换为小写形式,并调用原始字符串方法来进行比较或操作。 最后,使用`setattr`函数将新定义的方法`x`添加到`iStr`类中,名称与原始字符串方法的名称相同。 ```python for name in 'eq lt le gt gt ne contains'.split(): _make_case_insensitive('__%s__' % name) ``` 这个循环使用辅助函数`_make_case_insensitive`创建了一系列不区分大小写的比较操作方法,包括等于、小于、小于等于、大于、大于等于、不等于和包含。 ```python for name in 'count endswith find index rfind rindex startswith'.split(): _make_case_insensitive(name) ``` 这个循环使用辅助函数`_make_case_insensitive`创建了一系列不区分大小写的字符串操作方法,包括计数、以什么结尾、查找、索引等。 ```python del _make_case_insensitive ``` 最后,删除了辅助函数`_make_case_insensitive`,以避免在后续代码中被误用。 现在,让我们来看一个使用`iStr`类的示例: ```python s = iStr("Hello World") print(s) # 输出:iStr('Hello World') print(s.lower()) # 输出:hello world print(s.startswith("hello")) # 输出:True print(s.contains("WORLD")) # 输出:True print(s.count("o")) # 输出:2 ``` 在这个示例中,我们创建了一个`iStr`类的实例`s`,并调用了它的一些方法来进行字符串比较和操作。由于`iStr`类实现了不区分大小写的功能,所以不论传入的参数是大写还是小写,都能正确地进行比较和操作,并返回预期的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值