小编Map*_*sis的帖子

在socket.io中控制客户端的心跳超时

我有移动客户端连接到node.js服务器,通过xhr-polling运行socket.io.我有两种类型的客户:

  • A型

    当由于网络问题(或客户端崩溃)导致连接中断时,默认心跳超时太长

  • B型

    当连接中断此客户端时,我需要给它更多时间来恢复 - 客户端恢复比服务器中断连接/会话更重要

所以我的问题是如何配置(如果可能的话)来自实际客户端的心跳超时?

client node.js socket.io

23
推荐指数
3
解决办法
4万
查看次数

Python中的spaceite的Sqlite load_extension失败

我正在尝试使用Spatialite beta版本3.0,因为我在64位计算机上使用Windows 7.

sqlite3.OperationalError: The specified module could not be found.尝试加载时始终遇到可怕的错误 libspatialite-4.dll.

我尝试过以下方法:

  • put libspatialite-4.dll和所有其他dll在同一个文件夹中
  • 使用dll的完整路径
  • 将dll位置添加到'PATH'环境变量
  • 将dll位置作为Python代码的一部分附加到sys.path属性
  • 复制c:\windows\system32文件夹中的所有dll (完成重启机器)
  • 复制c:\windows\sysWoW64文件夹中的所有dll (完成重启机器,这应该是32位dll,但我还是尝试过)

我的代码如下:

import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-4.dll")')
Run Code Online (Sandbox Code Playgroud)

注意 - 我也试过了完整的路径而没有运气.我记得在Windows XP 32位上遇到了同样的问题.我得到它的工作,但不记得我做了什么:(

UPDATE

我已经在32位Windows 7上测试了设置,并将所有dll放在System32文件夹中.因此,这表明64位设置存在一些问题.可能是我需要另一个版本的MSVC(我不认为Spatialite网站说哪个是必要的,所以我可能只需要猜测 - 我安装了MSVC2010)?

python sqlite spatialite

10
推荐指数
1
解决办法
7590
查看次数

试图了解Python的Concurrent.Futures模块

我试图了解如何concurrent.futures在Python 3.2.2中使用该模块,并且一直在使用文档中的示例。当我尝试运用自己的理解时,我自己的例子失败了。我希望有人能帮助我走上正轨!

我希望能够设置多个同时运行但异步运行的进程。我的进程不返回任何东西。为了模拟这一点,我编写了一个简单的示例:

import concurrent.futures

fred = [1,2,3,4,5,6,7,8,9,10]

def f(x):
    print(x * x)

def main():
    with concurrent.futures.ProcessPoolExecutor() as executor:
        for num in fred:
            executor.submit(f, num)

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

此代码运行(在4核Windows XP机器上)并返回:

1 4 9 16 25

...但随后挂起。

显然我做错了。那么,让Python在进程池中运行进程的正确方法是什么?我不想使用这种executor.map方法,因为我的过程没有任何回报。

还是……我是否必须通过返回流程TrueFalse(或其他方式)伪造它?

谢谢!

python concurrency multithreading

5
推荐指数
1
解决办法
2201
查看次数

Python pickle在版本之间转换为unicode

我有一个使用Python 3.2腌制字典的过程.然后我需要使用Python 2.7或2.6来解开这个字典.问题是当在python版本之间进行传输时,我会得到一个充满unicode数据的字典,这会扰乱我试图将其输入的Python API.

在Python 3.2中腌制:

myDict = {'a': 'first', 'b': 'second', 'c': 'third'}
with open(file, 'wb') as f:
    pickle.dump(myDict, f, 2)
Run Code Online (Sandbox Code Playgroud)

在Python 2.6中取消:

with open(file, f) as f:
    myDict = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)

回归:{u'a':你'第一',你'':你'第三',你'':你'第二'}

我怎样才能准确回到我所投入的内容(即不是unicode)?

python unicode pickle

1
推荐指数
1
解决办法
639
查看次数