在Flask上运行一些viber机器人

2024-06-16 11:00:27 发布

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

我用Python做了毒蛇机器人。工作正常。现在我尝试在一个web服务器上运行几个bot。第一个机器人正在工作,但是 第二个不是。你知道吗

app = Flask(__name__)  


app2 = Flask('app2')
@app.route('/', methods=['POST'])
def incoming():
    viber_request = viber.parse_request(request.get_data())
    if isinstance(viber_request, ViberMessageRequest):
         viber.send_messages(viber_request.sender.id,[TextMessage(text='test1')] )

@app2.route('/ff', methods=['POST'])
def incoming2():
    viber_request = viber.parse_request(request.get_data())
    if isinstance(viber_request, ViberMessageRequest):
         viber.send_messages(viber_request.sender.id,[TextMessage(text='test2')] )

def set_webhook(viber):
    viber.unset_webhook()
    time.sleep(1)
    viber.set_webhook('https://myhost.pythonanywhere.com')

def set_webhook2(viber2):
    viber2.unset_webhook()
    time.sleep(1)
    viber2.set_webhook('https://myhost.pythonanywhere.com/ff')



if __name__ == "__main__":
    scheduler = sched.scheduler(time.time, time.sleep)
    scheduler.enter(5, 1, set_webhook, (viber,))
    t = threading.Thread(target=scheduler.run)
    t.start()

    scheduler = sched.scheduler(time.time, time.sleep)
    scheduler.enter(5, 1, set_webhook2, (viber2,))
    t = threading.Thread(target=scheduler.run)
    t.start()


    app.run(host='https://myhost.pythonanywhere.com', port=8443, debug=True)
    app2.run(host='https://myhost.pythonanywhere.com/ff', port=8080, debug=True)

第一个bot响应test1,但第二个bot保持沉默。 如何在一个web服务器上正确运行几个bot?两个标记都是正确的


Tags: httpscomtimerequestdefbotsleepwebhook
1条回答
网友
1楼 · 发布于 2024-06-16 11:00:27

可能的原因是您正在使用:

@app.route('/ff', methods=['POST'])

而不是

@app2.route('/ff', methods=['POST'])

换言之,你不必创建两个不同的应用程序。 如果从代码中删除最后一行(app2.run(host='https://myhost.pythonanywhere.com/ff',port=8080,debug=True)),那么代码将正常工作,您可以访问端口8443上的https://myhost.pythonanywhere.com/上的第一个bot和端口8443上的https://myhost.pythonanywhere.com/ff上的第二个bot

相关问题 更多 >