使用python3.5在Flask中创建一个异步函数?

2024-04-24 13:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的公司更新一个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异步?它不必是一个装饰工,尽管它不会伤害将来的使用。在


Tags: 代码in命令应用程序urlhellotaskdata
1条回答
网友
1楼 · 发布于 2024-04-24 13:45:24

正如我从Zappa的简要介绍中了解到的,一个@task修饰符并不使函数异步,而是与Zappa的执行器的接口。在纯Python中,ThreadPoolExecutor和{a2}看起来非常相似。在

相关问题 更多 >