小编Bad*_*der的帖子

烧瓶中的后台任务

我正在编写一个 Web 应用程序,它会做一些繁重的工作。考虑到这一点,我考虑将任务作为后台任务(非阻塞),以便其他请求不会被先前的请求阻塞。

我继续妖魔化线程,以便在主线程(因为我正在使用threaded=True)完成后它不会退出,现在如果用户发送请求,我的代码将立即告诉他们他们的请求正在进行中(它将运行在后台)并且应用程序已准备好为其他请求提供服务。我当前的应用程序代码看起来像这样。

from flask import Flask
from flask import request
import threading

class threadClass:

    def __init__(self):
        thread = threading.Thread(target=self.run, args=())
        thread.daemon = True                       # Daemonize thread
        thread.start()                             # Start the execution

    def run(self):

         #
         # This might take several minutes to complete
         someHeavyFunction()

app = Flask(__name__)

@app.route('/start', methods=['POST'])
    try:
        begin = threadClass()
    except:
        abort(500)

    return "Task is in progress"

def main():
    """
    Main entry point into program execution

    PARAMETERS: none
    """
    app.run(host='0.0.0.0',threaded=True)

main()
Run Code Online (Sandbox Code Playgroud)

我只是希望它能够处理一些并发请求(它不会在生产中使用)

我可以做得更好吗?我错过了什么吗?我正在浏览 python …

python multithreading flask

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

有例外的类

我正在浏览python中的异常文档:-( https://docs.python.org/2/tutorial/classes.html#exceptions-are-classes-too)

我似乎无法找到这段代码是如何工作的

class B:
     pass
class C(B):
     pass
class D(C):
     pass  

for c in [B, C, D]:
    try:
        raise c()
    except D:
        print "D"
    except C:
        print "C"
    except B:
        print "B"
Run Code Online (Sandbox Code Playgroud)

输出: -

B
C
D
Run Code Online (Sandbox Code Playgroud)

什么是"通过"在课堂上做什么?只需浏览文档,我就可以获得所有类的对象(对象创建顺序: - B,C和D),并在其名称中引发异常,如果是顺序则说明输出B,C ,d.

但是如果我们excpet Bexcept D整个输出替换就改变了.

class B:
     pass
class C(B):
     pass
class D(C):
     pass  

for c in [B, C, D]:
    try:
        raise c()
    except B:
        print "B"
    except C:
        print "C"
    except D:
        print "D" …
Run Code Online (Sandbox Code Playgroud)

python exception

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

在python中对两个列表进行分组

我有两个列表,我想根据列表的第一个元素进行分组.

list1 = [['1','abc','zef'],['2','qwerty','opo'],['3','lol','pop']]

list2 = [['1','rofl','pole'],['2','sole','pop'],['3','lmao','wtf']]
Run Code Online (Sandbox Code Playgroud)

这里列表中列表中的第一个元素是'1','2'和'3'.

我希望我的最终名单如下: -

Final_List = [['1', 'abc', 'zef', 'rofl', 'pole'], ['3', 'lol', 'pop', 'lmao', 'wtf'], ['2', 'qwerty', 'opo', 'sole', 'pop']]
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码试过这个.

#!/usr/bin/python
list1 = [['1','abc','zef'],['2','qwerty','opo'],['3','lol','pop']]
list2 = [['1','rofl','pole'],['2','sole','pop'],['3','lmao','wtf']]
d = {}
for i in list1:
    d[i[0]] = i[1:]
for i in list2:
    d[i[0]].extend(i[1:])
Final_List = []
for key, value in d.iteritems():
    value.insert(0,key)
   Final_List.append(value)
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但我想知道是否有一种简单而清洁的方法

有帮助吗?

python list

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

布尔键与字典中的其他数据类型

我正在浏览一些python字典链接并找到了这个.

我似乎无法理解下面发生了什么.

dict1 = {1:'1',2:'2'}
print dict1
Run Code Online (Sandbox Code Playgroud)

产量

{1:'1',2:'2'}
Run Code Online (Sandbox Code Playgroud)

但是如果我在字典中添加一个布尔键,它会给出一些奇怪的东西.

dict2 = {True:'yes',1:'1',2:'2'}
print dict2
Run Code Online (Sandbox Code Playgroud)

产量

{True:'1',2:'2'}
Run Code Online (Sandbox Code Playgroud)

只有在字典中包含布尔值时才会发生吗?

python dictionary

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

从 kubectl 输出显示失败的 pod

我想编写一个包装器kubectl来仅显示失败的 pod,这意味着它应该只显示 Ready 列值不相同的项目(即0/1, 0/2, 1/2, 2/3,等)

$ kubectl get pods --all-namespaces
NAMESPACE       NAME                                        READY     STATUS             RESTARTS   AGE
default         pod-with-sidecar                            1/2       ErrImagePull       0          39s
kube-system     calico-node-chcqq                           2/2       Running            2          7d
kube-system     calico-policy-controller-6449789dd6-z5t5j   1/1       Running            0          7d
kube-system     etcd                                        1/1       Running            0          7d
kube-system     kube-apiserver                              1/1       Running            2          7d
kube-system     kube-controller-manager                     1/1       Running            0          7d
kube-system     kube-dns-5c76d6bddb-8zhmq                   3/3       Running            1          7d
kube-system     kube-proxy-xq8j6                            1/1       Running            0          7d
kube-system     kube-scheduler-                             1/1       Running            0          7d
kube-system     tiller-deploy-5b7cb9cfd7-j725s              1/1       Running …
Run Code Online (Sandbox Code Playgroud)

grep kubernetes

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

拆分一个字符串(在空格或标点符号上)以获取所有数字

我有一个字符串

Mystring = "123 456 789, 234, 999|567 888[222"
Run Code Online (Sandbox Code Playgroud)

我想拆分这个字符串" " "," "|",并"["获取列表中的所有数字

预期产出: -

List = ["123","456","789","234","999",567","888","222"]
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

Final_List = re.findall("(\d+?)[ ,|\]]",Mystring)
Run Code Online (Sandbox Code Playgroud)

实际产量:

["123","456","789",234","999",567"]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到所有数字?

python regex findall

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

删除前导和尾随空格但不在单词之间

我正在将数据库表转换为带有'|'的CSV文件 作为分隔符.

我有一个数据库表的输出,如: -

表:-

|London          |       Jul  9 2014  1:21PM  |john         |
|New York        |       Jul  9 2014  1:21PM  |peter        |
|New Zeland      |       Jul  9 2014  1:21PM  |Mr. Jones    |
Run Code Online (Sandbox Code Playgroud)

我想删除尾随空格并将其格式化为: -

|London|Jul  9 2014  1:21PM|john|
|New York|Jul  9 2014  1:21PM|peter|
|New Zeland|Jul  9 2014  1:21PM|Mr. Jones|
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码

f = open(csv_file,'w')
for lines in Table:
    lines = lines.replace(' ','')
    f.write(lines)

f.close
Run Code Online (Sandbox Code Playgroud)

但在文件中我在csv文件中得到类似的东西: -

|London|Jul920141:21PM|john|
|NewYork|Jul920141:21PM|peter|
|NewZeland|Jul920141:21PM|Mr.Jones|
Run Code Online (Sandbox Code Playgroud)

如何删除不需要的空格,同时保留单词之间的onces?

python

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