小编The*_*One的帖子

ConnectionError,URL超过最大重试次数(由None引起)

它说的是什么意思:

requests.exceptions.ConnectionError: None: Max retries exceeded with url: /myurl (Caused by None)
Run Code Online (Sandbox Code Playgroud)

具体来说,“无人引起”是什么意思?

我有一个python客户端和一个简单的clojure服务器在同一台计算机上运行。该服务器在具有4个线程的compojure + http-kit上运行。客户端通过多处理使用3到4个进程连续提交POST请求.3个工作进程池。

每隔一段时间,客户端就会死于上述ConnectionError。我在客户端设置了retries = 3,并将服务器上的队列大小增加到1000000,没有任何效果。

任何帮助,将不胜感激。

编辑:更正,我实际上是发送POST请求而不是GET。

实际脚本太大,无法在此处发布,但基本上它的工作原理是这样的。我有一个函数,它使用一些数据调用发布:

def post_func(my_data, config):
    return requests.post(my_url, data=json.dumps({"data": my_data, "config": config}))
Run Code Online (Sandbox Code Playgroud)

包装multiprocessing.Pool的类:

class Executor(object):
    def __init__(self, nprocs):
        self.pool = Pool(processes=nprocs)

    def execute(self, func, list_of_data):
        return self.pool.map(func, list_of_data)
Run Code Online (Sandbox Code Playgroud)

另一个使用不同配置调用Executor.execute()的函数:

function eval(executor, list_of_data, config):
    start = timer()
    func = partial(post_func, config=config)
    results = executor.execute(func, list_of_data)
    taken = timer()-start
    return results
Run Code Online (Sandbox Code Playgroud)

单个执行程序可用于所有eval()调用。然后将eval()包装在一个计分函数中,并赋予pyswarm进行优化:

pso(score_func, lbs, ubs, swarmsize=20, maxiter=20, debug=True)
Run Code Online (Sandbox Code Playgroud)

编辑:我可能应该早些做些什么,但是正确捕获ConnectionError给我这个:

ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=5000): Max …
Run Code Online (Sandbox Code Playgroud)

python clojure python-requests

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

从消失点计算旋转矩阵

我正在尝试恢复图像中建筑物三个轴的 3D 方向。

我目前的做法是手动标注三个轴对应的三个消失点,估计相机标定矩阵K,然后通过归一化K^{-1}v_{i}从一个消失点计算旋转矩阵的每一列,如本文附录中所述。

尽管这似乎有效,但 R 的计算列并不完全正交,我怀疑如果消失点噪声更大,问题会更加明显。

我可以通过使用 SVD 分解估计的 R 并将所有奇异值设置为 1 来捏造它,但我更喜欢更有原则的解决方案。另一种思路是将其作为约束优化问题来解决,该问题旨在最小化消失点上的投影误差。

是否有更好的方法从 K 和消失点计算旋转矩阵,同时考虑正交性和列单位约束?

提前致谢。

3d computer-vision rotational-matrices vanishing-point

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

试图了解zeromq高水印行为

我一直在玩pyzmq和使用HWM进行简单的负载平衡,但我不太了解所看到的行为。

我建立了一个简单的多线程测试,将DEALER客户端通过ROUTER to DEALER模式连接到两个工作程序。HWM设置为1。其中一个工作进程非常快,另一个工作进程非常慢,客户端所做的只是向服务器发送100条垃圾邮件。通常看来,这是可行的,并且速度较快的工作者比速度较慢的工作者处理更多的消息。

但是,即使我将慢工作程序设置为如此慢,以至于快工作程序应该能够在慢工作程序完成一个消息之前就处理99条消息,但慢工作程序似乎仍会接收至少2或3条消息。

高水位标记的行为不准确还是我缺少了什么?

服务器代码如下:

import re, sys, time, string, zmq, threading, signal


def worker_routine(worker_url, worker_id, context=None):
    # socket to talk to dispatcher
    context = context or zmq.Context.instance()
    socket = context.socket(zmq.REP)
    socket.set_hwm(1)
    socket.connect(worker_url)

    print "worker ", worker_id, " ready ..."
    while True:
        x = socket.recv()

        if worker_id==1:
            time.sleep(3)

        print worker_id, x
        sys.stdout.flush()

        socket.send(b'world')


context = zmq.Context().instance()
# socket facing clients
frontend = context.socket(zmq.ROUTER)
frontend.bind("tcp://*:5559")
# socket facing services
backend  = context.socket(zmq.DEALER)
url_worker = "inproc://workers"
backend.set_hwm(1)
backend.bind(url_worker)

# launch …
Run Code Online (Sandbox Code Playgroud)

python multithreading zeromq pyzmq

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