从一台 Flask 服务器运行 APScheduler 和 twilio webhook

问题描述

我目前正在使用 Twilio 创建 SMS 消息服务,但我也希望它能够在特定时间自行发送文本。我正在考虑使用 APScheduler 来做到这一点,但还没有让它发挥作用。

这是我目前所拥有的:

from flask import Flask,request
import requests
from twilio.twiml.messaging_response import MessagingResponse
from apscheduler.schedulers.background import BackgroundScheduler

app = Flask(__name__)
scheduler = BackgroundScheduler()


@app.route('/bot',methods=['POST'])
def bot():
    print("received incoming POST")
    incoming_msg = request.values.get('Body','').lower()
    resp = MessagingResponse()
    msg = resp.message()
    responded = False
    if 'quote' in incoming_msg:
        # return a quote
        r = requests.get('https://api.quotable.io/random')
        if r.status_code == 200:
            data = r.json()
            quote = f'{data["content"]} ({data["author"]})'
        else:
            quote = 'I Could not retrieve a quote at this time,sorry.'
        msg.body(quote)
        responded = True
    if 'cat' in incoming_msg:
        # return a cat pic
        msg.media('https://cataas.com/cat')
        responded = True
    if not responded:
        msg.body('I only kNow about famous quotes and cats,sorry!')
    return str(resp)

async def job():
    print('hi')

scheduler.add_job(job,"interval",seconds=3)
scheduler.start()


if __name__ == '__main__':
    app.run()

当我运行它时,我能够发送和接收文本,但是“hi”打印会导致错误消息:RuntimeWarning: coroutine 'job' was never awaited。有人对解决错误或使用不同的堆栈来执行此功能有什么建议吗?

非常感谢!

解决方法

我刚刚通过删除工作职能的 async 部分使其工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...