2017-06-19 148 views
0

我試圖讓一個Python Twilio殭屍我剛剛購買了EC2服務器上運行(Ubuntu的16.04)上運行Twilio機器人,使機器人將能夠全天候運行。AWS EC2服務器(瓶)

我已經基本上遵循了這一教程(http://amunategui.github.io/idea-to-pitch/)到骨頭,但不是使用剽竊探測器,我把在回覆它與你好發送消息的一些基本Twilio回覆代碼,你說[message_body_of_original_text ]。它運行良好,但在關閉計算機時不起作用。

我新的服務器,Python和瓶,所以任何建議將極大地幫助。

短信回覆機器人的基本代碼:

from flask import Flask, request 
from twilio.twiml.messaging_response import MessagingResponse 

app = Flask(__name__) 


@app.route("/sms", methods=['GET', 'POST']) 
def sms_reply(): 
    """Respond to incoming calls with a simple text message.""" 
    # Start our TwiML response 
    resp = MessagingResponse() 
    message_body = request.form['Body'] 
    print(message_body) 
    # Add a message 
    resp.message("Hello, you said {}".format(message_body)) 

    return str(resp) 

if __name__ == "__main__": 
    app.run(debug=True) 

回答

1

如果你設法讓你的機器上運行,你就成功了一半。

這GitHub的教程似乎不錯,但可拓。適合生產部署,但不適合初學者的實驗。

有很多該教程中移動件:Python代碼,Apache服務器,EC2服務器,防火牆等我開始以遞增步調試,沒有任何廢話。

首先我會在EC2上運行應用程序,就像我在我的機器上運行它:python run_my_twiliio_app.py。您的代碼正在使用app.run()調用時的默認值,這意味着您的應用程序將監聽端口5000以查看僅源自本地服務器的請求。所以你必須從服務器內部進行測試,通過對5000端口執行本地http請求:從服務器內運行wget localhost:5000/sms

然後我會試着從EC2外部訪問它。這就要求:

  1. 告訴燒瓶應用傾聽來自任何IP來請求:更換你的app.run()app.run(host='0.0.0.0')
  2. 通過端口5000(您的應用程序的端口)打開防火牆傳入的請求從任何IP。對於AWS EC2,這涉及通過AWS web儀表板修改安全組的規則。

你應該能夠測試這一步驟通過打開瀏覽器中的工作the.ip.of.ec2:5000/SMS(您可以從AWS控制檯內得到您的EC2的IP)

我確信這兩個步驟工作正常後,才,我想移動到具有阿帕奇(或Nginx的)爲我的web應用程序

0

你是說它運行在遠程服務器上的微細而您的計算機連接到終端,但然後在註銷時停止?如果是這樣,你並不孤單,這是我碰到的第一個python問題之一。

您可以創建一個批處理/ cron作業自動啓動python腳本,或者你可以嘗試從終端運行nohup命令:

nohup的蟒蛇myScript.py &

該腳本將現在在關閉殼後繼續運行