Python线程:运行一个线程,删除所有其他线程的最佳实践

时间:2019-06-18 18:30:05

标签: python multithreading events flask

我有一个烧瓶应用程序,它运行一个基本的http REST api,该api在一个端点上具有如下所示的代码:

@app.route('/api/endpoint'), methods=['GET', 'POST'])
def endpoint():
    response = ImportedApiCall()
    stuff()
    # Running this in a thread because we 
    # need somefunc() to run in the background
    # while returning response right away, but we only
    # need somefunc() to run once and only once while
    # this API endpoint receives a burst of hits
    thread = threading.Thread(target=someclass.somefunc, args = (arguments,))
    thread.start()
    # This is needed by the external API that 
    # hits /api/endpoint
    return str(response) 

问题是/ api / endpoint的这个端点将被击中很多次,我需要它来运行作为线程生成的代码,几乎只在第一次被击中时,而忽略了所有其他线程, someclass.somefunc函数可以正常工作,这可以保证大约需要几分钟,而这些API命中发生在特定时间范围内。我知道我可能应该使用线程事件功能来完成此任务,但我并不是100%地了解解决该问题的最佳方法,因为它似乎充满了很多陷阱,注意事项(我已经习惯了并发性较少考虑的语言)。我是以某种方式将事件声明填充到someclass.somefunc上的__init__中还是编写全新的事件处理程序类?

0 个答案:

没有答案