我正在尝试为我的公司更新一个Slack应用程序,它将查询我们的API,执行一些计算,并给出一个不错的报告。问题是报告运行大约需要7-10秒,Slack只允许斜杠命令超时3000ms。在
不过,这并不是一个大问题,因为您可以通过确认命令的消息立即响应,然后在报告完成时再次响应。在
剩下的Slack应用程序是用Flask后端编写的,托管在ubuntu16.04服务器上,所以我们运行python3.5。在
我的found代码演示了如何做我想做的事情,它使用了Zappa库,它看起来像是为AWS的lamdba编写的,它使用了一个@task
修饰符来强制函数异步。不幸的是,它不能在低于python3.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
异步?它不必是一个装饰工,尽管它不会伤害将来的使用。在
正如我从Zappa的简要介绍中了解到的,一个
@task
修饰符并不使函数异步,而是与Zappa的执行器的接口。在纯Python中,ThreadPoolExecutor和{a2}看起来非常相似。在相关问题 更多 >
编程相关推荐