小编Jef*_*ffG的帖子

Tornado阻止异步请求

使用Tornado,我有一个Get请求需要很长时间,因为它向另一个Web服务发出许多请求并处理数据,可能需要几分钟才能完全完成.我不希望这阻止整个Web服务器响应其当前所做的其他请求.

据我了解,Tornado是单线程并同步执行每个请求,即使它异步处理它们(仍然在那个位置上混淆).长进程的某些部分可能是暂停点,以允许服务器处理其他请求(可能的解决方案?).我在Heroku上运行它只有一个工作者,所以不确定如何转换为产生一个新的线程或多处理,我没有使用python的经验.

这里是我想要做的事:客户端发出GET调用来启动进程,那么我通过循环另一个get调用每5秒检查状态,并用新信息更新页面(长轮询也将工作,但运行进入同一问题).问题是启动长进程会阻止所有新的get请求(或新的长轮询会话),直到它完成为止.

是否有一种简单的方法可以启动这个长时间的呼叫,而不是让它在整个过程中阻止整个Web服务器?有没有什么我可以在代码中说.."暂停,处理待处理的请求然后继续"?

我需要在ProcessHandler上发起get请求.然后我需要继续能够在ProcessHandler运行时查询StatusHandler.

例:

class StatusHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
       self.render("status.html")

class ProcessHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
       self.updateStatus("0")
       result1 = self.function1()
       self.updateStatus("1")
       result2 = self.function2(result1)
       self.updateStatus("2")
       result3 = self.function3(result2)
       self.updateStatus("3")
       self.finish()
Run Code Online (Sandbox Code Playgroud)

python tornado long-polling

12
推荐指数
2
解决办法
1万
查看次数

模糊匹配数

我一直在使用Double Metaphone和Caverphone2进行字符串比较,它们在名称,地址等方面做得很好(Caverphone2对我来说效果最好).但是,当您获得数字值时,例如电话号码,IP地址,信用卡号等,它们会产生太多的误报.

所以我看了LuhnVerhoeff算法,它们基本上描述了我想要的东西,但并不完全.他们似乎擅长验证,但似乎并不是为模糊匹配而构建的.有什么行为像Luhn和Verhoeff,它可以检测到涉及两个相邻数字的单位错误和换位错误,用于编码和比较目的,类似于模糊字符串算法?

我想对一个数字进行编码,然后将其与100,000个其他数字进行比较,以找到完全相同的匹配.因此像7041234这样的东西会与7041324匹配作为可能的转录错误,但像4213704这样的东西不会.

algorithm fuzzy-comparison

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

Java - 使库和导入可选

我有一个在 Java 应用程序中使用的库 - 它对于某些功能很重要,但它是可选的。这意味着如果 JAR 文件不存在,程序将继续运行而不会出现问题。我想开源我的程序,但我不能包含这个库,这是编译源代码所必需的,因为我有许多导入语句来使用 API。我不想维护两个代码集。从开源版本中删除物理 jar 文件,但仍保留代码以支持它,让其他人仍然可以编译它,最好的方法是什么?

java import jar code-organization

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

Chrome扩展程序:打开新标签页而不会丢失弹出式焦点

我在Chrome扩展程序上有一个简单的研究链接列表:

<a href="http://www.example1.com" target="_blank">Research Link 1</a>
<a href="http://www.example2.com" target="_blank">Research Link 2</a>
<a href="http://www.example3.com" target="_blank">Research Link 3</a>
Run Code Online (Sandbox Code Playgroud)

在任何网页上,我都可以按住Ctrl键并单击所有三个链接,在后台打开新选项卡.但是,Chrome扩展弹出窗口似乎不是这种情况.如果按住Ctrl键并单击某个链接,该扩展程序将关闭弹出窗口,这会阻止您随时单击多个链接.

我尝试过点击chrome.tabs.create方法,这在其他几篇文章中有描述,但这似乎只是点击target ="_ blank",因为它只是打开一个带焦点的新标签.

chrome.tabs.create({url: 'http://www.google.com'});
Run Code Online (Sandbox Code Playgroud)

有没有办法打开没有焦点的新选项卡(ctrl +单击),同时仍然允许扩展弹出窗口在当前选项卡中保持可见,以便用户可以单击第二,第三或第四个链接?这样,用户不必多次重新运行扩展,这需要花费时间,因为它必须重新进行身份验证和查询数据.

javascript google-chrome-extension

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

在Javascript中更改CSS子类的值

所以我在这里有一个简单的类/子类,它位于style.css中.我不能使用#为元素分配id或在CSS中将其定义为id.所以没有简单的getElementById().我需要使用javascript或jquery动态地将"top"值更改为各种大小.

.slider-edit .bx-prev {
    position: absolute;
    top: 265px;
    left: -32px;
    width: 31px;
    height: 31px;
    text-indent: -999999px;
    background: url(../images/icon_arrow_left.png) no-repeat 0 -31px;
}
Run Code Online (Sandbox Code Playgroud)

我搜索了网站和网站,尝试这样的事情没有运气.

$("slider-edit bx-prev").css("top","100px");
$(".slider-edit .bx-prev").css("top","100px");
document.getElementsByClassName('slider-edit bx-prev').style.top = "100px";
document.getElementsByClassName('.slider-edit .bx-prev').style.top = "100px";
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

javascript css jquery

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