2013-09-25 49 views
3

我正試圖在燒瓶框架上運行一個簡單的Python應用程序Twilio API。我在virtualenv與以下相關發展:需要幫助修復500錯誤蟒蛇/燒瓶應用程序

  • Jinja2的
  • MarkupSafe
  • WERKZEUG
  • argparse
  • gunicorn
  • httplib2的
  • itsdangerous
  • twilio
  • unittest2
  • 的wsgiref

當我運行使用工頭我的索引頁面呈現精緻和負載TwiML很好,但我在那裏我處理短信回覆/短信頁面繼續接收500錯誤,「服務器遇到內部錯誤,無法完成您的請求。無論是服務器超載或有錯誤的應用程序,「如果我推到Heroku上出現同樣的錯誤下面是我的代碼,任何想法

from flask import Flask, request, redirect, session 
import twilio.twiml 
from twilio.rest import TwilioRestClient 
import os 

SECRET_KEY = 'a secret key' 

#initialize app 
app = Flask(__name__) 
app.config.from_object(__name__) 

@app.route('/') 
def index(): 
    return 'hello' 

@app.route("/sms", methods = ['GET', 'POST']) 
def sms(): 
    """Respond with the number of text messages sent between two parties.""" 
    counter = session.get('counter', 0) 
    counter += 1 
    if counter > 6: 
     counter = 1 
    session['counter'] = counter 

    score = session.get('score', 0) 
    answer = request.values.get('Body', '') 
    answer_response = False 
    response = False 
    if counter == 1: 
     response = "Welcome to our healthcare knowledge quiz. First question: What’s the average annual premium for family coverage on an employer health plan?" 
    elif counter == 2: 
     answer_response = "No, the average annual premium for family coverage on an employer health plan is $15,745." 
     if answer.lower() == 'b': 
      answer_response = "That's correct!" 
      score += 1 
     response = "Second question: What percentage of employer health premiums do workers pay, on average? A) 27.4%, B) 17.1%, C) 50.3%, or D) 5.8%" 
    elif counter == 3: 
     answer_response = "No, the average percentage of employer health premiums paid by workers is 27.4%" 
     if answer.lower() == 'a': 
      answer_response = "That's correct!" 
      score += 1 
     response = "3rd question: When do Americans have to purchase health insurance or face a penalty? A) January 2015, B) January 2014, C) December 2013, or D) December 2015." 
    elif counter == 4: 
     answer_response = "No, most Americans have to purchase health insurance or face a penalty under the federal healthcare law by January 2014." 
     if answer.lower() == 'b': 
      answer_response = "That's correct!" 
      score += 1 
     response = "4th question: What percentage of U.S. small businesses offered health benefits to their workers in 2010? A) 49%, B) 69%, C) 32%, or D) 58%." 
    elif counter == 5: 
     answer_response = "No, the percentage of U.S. small businesses which offered health benefits in 2010 was 49%." 
     if answer.lower() == 'a': 
      answer_response = "That's correct!" 
      score += 1 
     response = "5th question: How many people under 26 have been added to health plans as part of the Affordable Care Act? A) 5.6 mil., B) 0.5 mil., C) 2.9 mil., or D) 1.3 mil." 
    elif counter == 6: 
     answer_response = "No, 2.9 million young adults under age 26 have been added to parents' health plans as part of the Affordable Care Act." 
     if answer.lower() == 'c': 
      answer_response = "That's correct!" 
      score +=1 
     response = "Thanks for taking the healthcare quiz! You correctly answered %d out of 5 questions" % score 

    session['score'] = score 

    resp = twilio.twiml.Response() 
    if answer_response: 
     resp.sms(answer_response) 
    resp.sms(response) 
    return str(resp) 

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

凱文伯克

Heroku的日誌:。。?

2013-09-25T05:50:03.933994+00:00 heroku[web.1]: Starting process with command `gunicorn app_SMS_demo:app` 
201 
3-09-25T05:50:04.812490+00:00 app[web.1]: 2013-09-25 05:50:04 [2] [INFO] Handling signal: term 
2013-09-25T05:50:04.812967+00:00 app[web.1]: 2013-09-25 05:50:04 [7] [INFO] Worker exiting (pid: 7) 
2013-09-25T05:50:04.888387+00:00 app[web.1]: 2013-09-25 05:50:04 [2] [INFO] Shutting down: Master 
2013-09-25T05:50:06.437279+00:00 app[web.1]: 2013-09-25 05:50:06 [2] [INFO] Starting gunicorn 18.0 
2013-09-25T05:50:06.438326+00:00 app[web.1]: 2013-09-25 05:50:06 [2] [INFO] Listening at: http://0.0.0.0:53890 (2) 
2013-09-25T05:50:06.438549+00:00 app[web.1]: 2013-09-25 05:50:06 [2] [INFO] Using worker: sync 
2013-09-25T05:50:06.467209+00:00 app[web.1]: 2013-09-25 05:50:06 [7] [INFO] Booting worker with pid: 7 
2013-09-25T05:50:06.998082+00:00 heroku[web.1]: State changed from starting to up 
2013-09-25T05:50:07.065070+00:00 heroku[web.1]: Process exited with status 0 
2013-09-25T05:50:10.438774+00:00 heroku[router]: at=info method=GET path=/ host=quiet-tundra-1590.herokuapp.com fwd="76.126.150.1" dyno=web.1 connect=1ms service=2648ms status=200 bytes=5 
2013-09-25T05:52:44.200768+00:00 heroku[router]: at=info method=GET path=/ host=quiet-tundra-1590.herokuapp.com fwd="76.126.150.1" dyno=web.1 connect=2ms service=5ms status=200 bytes=5 
2013-09-25T05:52:53.941483+00:00 heroku[router]: at=info method=GET path=/sms host=quiet-tundra-1590.herokuapp.com fwd="76.126.150.1" dyno=web.1 connect=1ms service=177ms status=500 bytes=291 
+0

我的Procfile:web:gunicorn app_SMS_demo:app – user1821396

+0

也將endcoding設置爲utf-8:# - * - coding:utf-8 - * - – user1821396

+0

您可以粘貼回溯曲線。 –

回答

2

我是針對由Joel Franusic,爲Twilio開發者倡導的解決方案。事實證明,這是一個unicode的問題。我使用的文本從其他網站形成測驗。在文本中是統一的一個隱藏的撇號起源而不是預期的UTF-8,這阻止了格林獨角獸從r unning。

教訓教訓 - 不要複製webtext,重新輸入所有的,以避免錯誤,或者在文本編輯器或IDE,你可以分辨出兩者的字體類型之間的差異用明顯的字體。