我正在尝试更新我的公司的Slack应用程序,它将查询我们的API,执行一些计算,并吐出一个很好的报告。问题是,报告需要大约7-10秒才能运行,Slack只允许斜杠命令超时3000ms。
不过,这不是一个大问题,因为您可以立即使用一条确认命令的消息进行响应,然后在报告完成时再次响应。
我们的Slack应用程序的其余部分是使用Flask后端编写的,并托管在Ubuntu 16.04服务器上,因此我们运行Python3.5。
我的found代码演示了如何做我想做的事情,它使用Zappa库,它看起来像是针对亚马逊网络服务的lamdba的,它使用@task装饰器来强制一个函数是异步的。不幸的是,它不能在低于Python 3.6的版本上运行。
本教程中的示例代码:
@task
def hello_there_task(response_url):
sleep(5)
data = {
'response_type': 'in_channel',
'text': 'You _are_ a bold one.',
}
requests.post(response_url, json=data)
@app.route('/hello-there', methods=['POST'])
def hello_there():
if not is_request_valid(request):
abort(400)
hello_there_task(request.form['response_url'])
return jsonify(
response_type='in_channel',
text='<https://youtu.be/frszEJb0aOo|General Kenobi!>',
)我的问题是:如何在Python3.5中使hello_there_task异步?它不一定要是一个装饰器,尽管它对将来的使用没有坏处。
发布于 2018-07-04 03:36:51
根据我对Zappa的简要介绍,@task装饰器不会使函数异步,而只是Zappa的执行器的一个接口。在纯Python语言中,ThreadPoolExecutor和ProcessPoolExecutor看起来非常相似。
https://stackoverflow.com/questions/51159165
复制相似问题