我一直在试着想出这个,希望其他人已经遇到过这个并且知道如何解决它:)
我正在尝试构建一个非常简单的Flask端点,只需要调用一个长时间运行的阻塞php脚本(想想while true {...}).我尝试了几种不同的方法来异步启动脚本,但问题是我的浏览器实际上从未收到响应,即使执行了运行脚本后生成响应的代码.
我同时使用尝试multiprocessing和threading,既不似乎工作:
# multiprocessing attempt
@app.route('/endpoint')
def endpoint():
def worker():
subprocess.Popen('nohup php script.php &', shell=True, preexec_fn=os.setpgrp)
p = multiprocessing.Process(target=worker)
print '111111'
p.start()
print '222222'
return json.dumps({
'success': True
})
# threading attempt
@app.route('/endpoint')
def endpoint():
def thread_func():
subprocess.Popen('nohup php script.php &', shell=True, preexec_fn=os.setpgrp)
t = threading.Thread(target=thread_func)
print '111111'
t.start()
print '222222'
return json.dumps({
'success': True
})
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我看到的111111和222222,但我的浏览器仍然挂在从端点的响应.我已尝试p.daemon = True过这个过程,p.terminate()但没有运气.我曾希望在不同的shell中使用nohup启动一个脚本,并且单独的进程/线程可以正常工作,但不知何故Flask或uWSGI受其影响.
由于这在我的Mac上本地工作,当我直接启动我的Flask应用程序并直接 …
我正在尝试在Python中使用Javascript等效项:
a.new_func = function(arg1, arg2) {
var diff = arg1 - arg2;
return diff * diff;
}
Run Code Online (Sandbox Code Playgroud)
现在,我这样做的方法是首先定义方法,然后分配它,但我的问题是Python是否允许速记在同一行中进行赋值和定义部分.像这样的东西:
a.new_func = def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
Run Code Online (Sandbox Code Playgroud)
而不是这个:
def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
a.new_func = new_func
Run Code Online (Sandbox Code Playgroud)
我意识到差异不大,但我仍然有兴趣知道它是否可能.
我一直试图<li>从mouseenter事件中获取目标(元素),但到目前为止还没有运气!
代码:
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
var ul = document.getElementById('ul');
ul.onmouseenter = function(e) {
console.log(e.target);
};
</script>
Run Code Online (Sandbox Code Playgroud)
不幸的是,控制台不断打印<ul />元素.有什么建议?
我正在尝试提取出该-字符串之前和之后的其余数字,但无法同时提取出两者。这是交互式终端的输出:
>>> a = '#232 - Hello There'
>>> re.findall('#(.*?) - (.*?)', a)
[('232', '')]
Run Code Online (Sandbox Code Playgroud)
为什么我的正则表达式无法正常工作?