我對 Heroku 平臺很陌生,我不明白為什么我部署的 Twitter 機器人會在一段時間后關閉。不知道是dyno還是別的什么。
僵尸軟體
import time
import json
import requests
import tweepy
from os import environ
consumer_key = environ['api_key'] #API key
consumer_secret = environ['api_key_secret'] #API key scret
key = environ['access_token'] #Access token
secret = environ['access_token_secret'] #Access token secret
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) # Authentication
auth.set_access_token(key, secret) # Grant access to API
api = tweepy.API(auth) # Connect to API
def get_quote():
url = 'https://programming-quotes-api.herokuapp.com/Quotes/random'
response = requests.get(url)
data = json.loads(response.text)
data = data['en'] '\n--' data['author']
return data
def tweet_quote():
interval = 60 * 20 # 20 minutes
while True:
quote = get_quote()
api.update_status(quote)
time.sleep(interval)
if __name__ == "__main__":
tweet_quote()
檔案
web: python server.py
worker: python bot.py
測功機資訊在這里
uj5u.com熱心網友回復:
你Procfile表明你有一個web程序和一個worker程序。
假設您使用的是免費的測功機,這種行為是預期的(加粗):
如果一個應用程式有一個免費的網路測功機,并且該測功機在 30 分鐘內沒有收到任何網路流量,它將休眠。除了 web dyno 休眠之外,worker dyno(如果存在)也會休眠。
沒有測功機worker的應用程式上的免費測功機不會睡覺,但當然他們每個月會消耗大約 720 個免費測功機小時(每天 24 小時 × 每月 30 天)。web
你有幾個選擇:
- 通過Heroku 調度器定期(但不是經常)運行你的作業執行緒
- 例如,可以在有限的時間內每小時運行一次/推文
- 升級到付費測功機
- 將您的免費
worker測功機移動到另一個沒有測功機的應用程式web以防止其休眠...- ...盡管這對您的應用程式可能沒有多大意義
- 至少每 30 分鐘 ping 一次,讓您的網路測功機保持活力……
- ...但是您將在每個月大約 20 天的時間內用完免費的測功機時間(如果您的帳戶未經過驗證,則更早)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421188.html
標籤:
