2012-11-30 25 views
1

我試圖讓Flask在Windows上運行apache,並且遇到下面的錯誤消息。任何想法可能會導致這個問題?Flask Windows Apache問題

錯誤消息:

mod_wsgi (pid=4380): Exception occurred processing WSGI script 'C:/I4/importicus/importicus.wsgi'. 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] Traceback (most recent call last): 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1701, in __call__ 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  return self.wsgi_app(environ, start_response) 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1689, in wsgi_app 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  response = self.make_response(self.handle_exception(e)) 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1687, in wsgi_app 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  response = self.full_dispatch_request() 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1360, in full_dispatch_request 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  rv = self.handle_user_exception(e) 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1358, in full_dispatch_request 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  rv = self.dispatch_request() 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] File "C:\\Python26\\lib\\site-packages\\flask-0.9-py2.6.egg\\flask\\app.py", line 1344, in dispatch_request 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109]  return self.view_functions[rule.endpoint](**req.view_args) 
[Fri Nov 30 14:47:47 2012] [error] [client 192.168.100.109] TypeError: application() takes exactly 2 arguments (0 given) 

我WSGI文件看起來像這樣:

import sys 
sys.path.insert(0, "c:\i4\importicus") 

from importicus import importicus_main as application 
application.debug = True 

和我的應用程序文件看起來像這樣:

from flask import Flask, render_template,jsonify, request 
from werkzeug import secure_filename 
import importicus_functions 
import ast, os, sys 
importicus_main = Flask(__name__) 

UPLOAD_FOLDER = 'uploads' 
TEMPLATE_FOLDER = 'templates' 
importicus_main.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 
importicus_main.config['TEMPLATE_FOLDER'] = TEMPLATE_FOLDER 



@importicus_main.route('/') 
def application(environ, start_response): 
     status = '200 OK' 
     output = "Hello World! INSIDE" 
     response_headers = [('Content-type', 'text/plain'), 
          ('Content-Length', str(len(output)))] 
     start_response(status, response_headers) 
     return [output] 

回答

6

主要的問題是你試圖寫WSGI,而不是Flask。 (瓶是比較容易的方式。)

這是你想要什麼:

@importicus_main.route('/') 
def application(): 
    return "Hello World! INSIDE" 

控制器(如應用功能)不帶參數,除非有您的網址字符串參數。一個例子是:

# /blog/1 would be a valid URL here 
@importicus_main.route('/blog/<int:post_id>') 
def blog_post(post_id): 
    return "This would be blog post number %s" % post_id 

看看燒瓶教程,如果你跳過它 - 這是非常好的。我還建議讓你的應用程序與內置的測試服務器一起運行。您可以稍後輕鬆移植到mod_wsgi(或其他)。

+0

非常好,看起來我已經改變了太多東西,在我的匆忙中讓它在我們的服務器上運行。在過去6個月左右,我一直在Flask開發,但這是第一次部署(當然,它從一開始就發生了可怕的錯誤)。謝謝! – danspants

+0

宇!你完全受歡迎。 –