2012-01-05 4 views
0

私はウェブ上で動作する検索エンジンを作ろうとしています。 mod_wsgiを使用して、WebページからPythonでクエリを取得しました。次に、zeromqを使用してC++検索プログラムにクエリを送信しました。mod_wsgiとzeromqエラー(Python)

しかし、問題は、zeromqとmod_wsgiが一緒に動作しないようです。 Pythonがzmqをインポートすることができることは間違いなく事実である(私はそれをテストした)が、それはウェブ上で動作するとき、それは私がなぜWSGIができない見当がつかない(アパッチから実際のエラーログ)

File "D:/wsgi_app/wsgi_app.py", line 2, in <module>, referer: http://localhost/ 
     import zmq, referer: http://localhost/ 

File "D:\\util\\Python27\\lib\\site-packages\\zmq\\__init__.py", line 35, in <module>, referer: http://localhost/ 
     from zmq.utils import initthreads # initialize threads, referer: http://localhost/ 

ImportError: DLL load failed: \xc1\xf6\xc1\xa4\xb5\xc8 \xb8\xf0\xb5\xe2\xc0\xbb \xc3\xa3\xc0\xbb \xbc\xf6 \xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9., referer: http://localhost/ 

というエラーメッセージが表示さzmqをインポートします。ちなみに下のソースは、明示的に依存関係の場所を追加し、あなたのWSGIスクリプトでは、完全なPythonコード

from cgi import parse_qs, escape 
import zmq 
def application(# It accepts two arguments: 
     # environ points to a dictionary containing CGI like environment variables 
     # which is filled by the server for each received request from the client 
     environ, 
     # start_response is a callback function supplied by the server 
     # which will be used to send the HTTP status and headers to the server 
     start_response): 

    # get a query from the webpage :) 
    data = parse_qs(environ['QUERY_STRING']) 

    query = data.get('query', [''])[0] 
    query = escape(query) #prevent script injection 

    context = zmq.Context() 
    socket = context.socket(zmq.REQ) 
    socket.connect ("tcp://localhost:5555") #connect to C++ search server database 
    socket.send (query) 

    # build the response body possibly using the environ dictionary 
    response_body = 'The request method was %s' % environ['REQUEST_METHOD'] 

    # HTTP response code and message 
    status = '200 OK' 

    # These are HTTP headers expected by the client. 
    # They must be wrapped as a list of tupled pairs: 
    # [(Header name, Header value)]. 
    response_headers = [('Content-Type', 'text/plain'), 
         ('Content-Length', str(len(response_body)))] 

    # Send them to the server using the supplied function 
    start_response(status, response_headers) 

    # Return the response body. 
    # Notice it is wrapped in a list although it could be any iterable. 
    return [response_body] 

答えて

0

です:

import site 
site.addsitedir(path_to_zeromq) 
+0

私はそれをしたが、それは問題には解決しない... – Jaebum

+0

インポートサイト site.addsitedir( "D:\\ util \\ Python27 \\ Lib \\ site-packages \\ zmq") 私は上記のようにしました – Jaebum

+0

使用しているパスの最後からzmqを削除します –

関連する問題