【问题标题】:How to keep listening for a request at the same time process another request in python如何在python中同时处理另一个请求的同时监听一个请求
【发布时间】:2021-03-05 08:14:23
【问题描述】:

所以,这有点复杂。

我想做的事:

  1. 在 heroku 上托管应用程序并侦听消息应用程序发送的 webhook(JSON 格式)并将它们保存到数据库 (SQLite3)。
  2. 使用该数据库在 zoho 办公桌上生成工单。
  3. 如果工单状态为打开,我将使用新消息更新工单,否则我创建一个新工单。
  4. 总体包括两个过程:监听 webhook 和创建工单

我的问题/担忧:

  1. 我能够监听 webhook,但我面临的问题是,当我创建票证时,同一个脚本如何监听 webhook,反之亦然。
  2. 我不知道如何制作这些东西,以便在更新/创建票证时我应该能够接收 webhook。

监听 webhook 的示例代码(通过 POST 方法发送的 JSON 文件)。

from flask import Flask, request, Response

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def respond():
    print(request.json);
    return Response(status=200)

【问题讨论】:

    标签: json api flask heroku ticket-system


    【解决方案1】:

    你的过程不是很清楚。根据你的说法

    1. 您收到一条消息(通过 webhook)

    2. 然后你去生成一张票

    3. 如果工单状态为打开,您将使用步骤 1 中的消息更新工单

      评论 - 如果您在第 2 步中生成了工单,那么为什么此工单状态不会打开?新票应该是未结状态吧?

    4. 如果工单状态为未打开,您将创建一个新工单

      评论 - 但你说你是在第 2 步生成票证?

    也许我误解了您输入的内容,但您能否更详细地说明您的流程?

    【讨论】:

    • 我将重写我想做的事情: 1. 我收到一条消息(通过 webhook) 2. 我检查那个人的票是否已经存在,状态 = open。 3. 如果状态 = 打开:我将使用新消息更新工单。 4. 否则:我将生成新票。 - 在这里,状态是由人手动设置的。
    • 在这种情况下,将消息的处理卸载到函数并通过线程触发该函数from threading import Thread my_thread = Thread(target = <your function>) my_thread.start() 将处理发送到线程允许您的其他进程继续侦听消息。您也可以将消息添加到队列中,线程(现在单独运行)会定期检查并处理它在其中找到的任何消息。缺点是线程一直在运行
    • 我找到了解决方案,使用烧瓶我只需要设置 ''' app.run(threaded=True, port=5000) ''' 显然,flask 一直都有线程,我在浪费我的时间寻找解决方案。 :D
    猜你喜欢
    • 2013-12-26
    • 2019-08-17
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2019-07-09
    • 2023-03-27
    相关资源
    最近更新 更多