在烧瓶中长时间运行的工作

时间:2015-11-30 09:46:31

标签: python celery python-multithreading

我创建了一个执行大量计算的模块,并返回一些要存储在nosqldatabase中的数据。计算过程通过我的烧瓶应用程序中的post请求启动。 flask函数将执行cumputation代码并在代码之后,然后返回的结果将存储在db中。我在想芹菜。但是我想知道如果有可能使用python trheading E.g那就找不到任何明确的信息。

from mysci_module import heavy_compute


@route('/initiate_task/', methods=['POST',])
def run_computation():
    import thread
    thread.start_new_thread(heavy_compute, post_data)

    return reponse

我知道这非常抽象。我在这个方法中看到的唯一问题是我的函数必须知道并负责将数据存储在数据库中,因此它与所使用的数据库不是很独立。正确?为什么芹菜比上面的方法更好(是真的吗?)?

1 个答案:

答案 0 :(得分:1)

由于Gy使用线程限制了CPython的真正并发性,因此所有计算都将按顺序进行。相反,您可以使用python多处理模块并创建一个流程池来完成繁重的计算任务。

除了芹菜之外,还有一些微框架,例如twisted klein,它们也有助于实现您正在寻找的并发性和独立性。它们并不一定更好,但是对于那些不想弄清楚当人们进入同步瓶和实际业务逻辑时可能出现的各种问题的人来说,尤其是在响应时是基于该活动。