首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -在超时时重新提交未来

Python -在超时时重新提交未来
EN

Stack Overflow用户
提问于 2013-11-27 00:12:54
回答 1查看 1.2K关注 0票数 2

目前,我正在使用Python中的futures,以便同时连接(和分析)多个站点。

代码语言:javascript
复制
with concurrent.futures.ThreadPoolExecutor(max_workers = 8) as executor:
        futures = {executor.submit(analyser.analyse, name, aggregator, past, current):
                       (name, aggregator) for name, aggregator in aggregators.iteritems()}

        for future in concurrent.futures.as_completed(futures):
            records += future.result()

然而,期货有时会在某些网页上“卡住”,至少这是我的假设。(通常,我试图解决的问题是,当脚本从cronjob启动时,进程有时会卡住)。

不过,我想要做的是为某些期货实现一个“超时”,所以如果它超过了它的时间限制,那么未来将再次提交到池中。

代码语言:javascript
复制
with concurrent.futures.ThreadPoolExecutor(max_workers = 8) as executor:
        futures = {executor.submit(analyser.analyse, name, aggregator, past, current):
                       (name, aggregator) for name, aggregator in aggregators.iteritems()}

        for future in concurrent.futures.as_completed(futures):
            try:
                records += future.result(timeout = 30)
            except concurrent.futures.TimeoutError:
                if DEBUG:
                    print("Future took too long, retrying!")

不幸的是,我找不到一种方法将未来重新提交回池中,因为executor只接受“原始”对象,而不接受期货。有没有什么Pythonic式的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-04 04:55:32

没有办法重新提交,因为您不必这样做:它将留在池中,除非您显式地取消它。更多信息:How to use concurrent.futures with timeouts?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20222246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档