当用户发布 Tweepy 推文时,Twilio SMS 消息未发送

Twilio SMS message not sending when a user tweets Tweepy

我正在尝试在某个用户发推文时从一个 Twilio phone 号码向另一个号码发送短信。这是代码:

import tweepy
from twilio.rest import Client

consumer_key = CONSUMER_KEY
consumer_secret = CONSUMER_SECRET
access_token = ACCESS_TOKEN
access_token_secret = ACCESS_TOKEN_SECRET

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

client = Client(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if status.user.id_str == "14173315":
            message = client.messages \
                .create(
                    body="Success!",
                    from_=TWILIO_PHONE_NUMBER_1,
                    to=TWILIO_PHONE_NUMBER_2
                )

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(follow=["14173315"])

这是在 Heroku worker dyno 上托管的,因此当应用程序运行时,Tweepy 侦听器始终侦听来自 Twitter ID 14173315 的用户的推文。但是,只要 Twitter ID 14173315 的用户发了推文,没有发送短信。我知道这一点是因为我检查了 Twilio SMS 消息日志并且两个 phone 号码之间没有显示任何消息。我不知道为什么会这样。有任何想法吗?谢谢

这里是 Twilio 开发人员布道者。

经过长时间的交谈,事实证明这不是 Twitter 流 API 或 Twilio 的问题。相反,工作进程在 Heroku 上没有 运行ning。

当 运行在 Heroku 上运行 worker 时,您需要确保 worker 进程由 Heroku 启动。默认情况下,Heroku 会启动一个“web”进程,但你需要告诉它专门启动其他进程。

查看是否有进程运行ning,运行:

heroku ps

并且如果您在 Procfile 中定义了一个名为“worker”的进程,您可以使用以下命令确保它 运行 在一个 dyno 中运行:

heroku ps:scale worker=1

您可以阅读有关 scaling dynos in the Heroku documentation 的更多信息。