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]
私はそれをしたが、それは問題には解決しない... – Jaebum
インポートサイト site.addsitedir( "D:\\ util \\ Python27 \\ Lib \\ site-packages \\ zmq") 私は上記のようにしました – Jaebum
使用しているパスの最後からzmqを削除します –