2011-05-30 45 views
0

有一個在我的網站後臺功能,將來電urllib.urlopen(url))從URL檢索數據。部署完成後,除此之外,其他所有功能都運行良好。調用此函數的結果爲[Errno socket error] [Errno -2] Name or service not known。它似乎無法找到主機。使用Apache和mod_wsgi部署Django站點後發生套接字錯誤?

但是,如果使用python manage.py runserver運行的網站,這個功能效果很好。

我想知道是否也許有一些問題與Apache,但如果我不能找到它。謝謝你的幫助。

這是函數:

WORD_URL = 'http://dict.cn/ws.php?utf8=true&q=%s' 

def get_word(word): 
    url = WORD_URL % word 
    dom = minidom.parse(urllib.urlopen(url)) 
    try: 
     pron = dom.getElementsByTagName('pron')[0].firstChild.data 
     definition = dom.getElementsByTagName('def')[0].firstChild.data 
    except IndexError: 
     pron = '' 
     definition = '' 
    return { 
     'word':word, 
     'pron':pron, 
     'definition':definition 
     } 

這是回溯:

Traceback: 
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/jxq/djcode/wormo/core/views.py" in added 
31.    xml_word = get_word(new_word) 
File "/home/jxq/djcode/wormo/core/get_word.py" in get_word 
8.  dom = minidom.parse(urllib.urlopen(url)) 
File "/usr/lib/python2.7/urllib.py" in urlopen 
84.   return opener.open(url) 
File "/usr/lib/python2.7/urllib.py" in open 
205.     return getattr(self, name)(url) 
File "/usr/lib/python2.7/urllib.py" in open_http 
342.   h.endheaders(data) 
File "/usr/lib/python2.7/httplib.py" in endheaders 
937.   self._send_output(message_body) 
File "/usr/lib/python2.7/httplib.py" in _send_output 
797.   self.send(msg) 
File "/usr/lib/python2.7/httplib.py" in send 
759.     self.connect() 
File "/usr/lib/python2.7/httplib.py" in connect 
740.            self.timeout, self.source_address) 
File "/usr/lib/python2.7/socket.py" in create_connection 
553.  for res in getaddrinfo(host, port, 0, SOCK_STREAM): 

Exception Type: IOError at /wormo/added/ 
Exception Value: [Errno socket error] [Errno -2] Name or service not known 

的httpd.conf:

WSGIScriptAlias//home/jxq/djcode/wormo/apache/django.wsgi 

<Directory /home/jxq/djcode/wormo/apache> 
    Order allow,deny 
    Allow from all 
</Directory> 

Alias /media/ /home/jxq/djcode/wormo/media/ 

<Directory /home/jxq/djcode/wormo> 
Order deny,allow 
Allow from all 
</Directory> 

的Python 3和Python 2.7都是我的機器上。這是一個問題嗎?

+0

可能想提供您的設置和引發異常的函數的詳細信息。 – zeekay 2011-05-30 23:28:19

+0

你的代碼訪問什麼網址? – 2011-05-30 23:30:32

+0

@蒂姆 - 耶茨這是通過'http://dict.cn/ws.php UTF8 =真&Q =%s'?我可以在python shell中沒有錯誤地調用這個函數。 – amazingjxq 2011-05-30 23:36:02

回答

0

這是可能的,這可能是一個權限問題或者你的Apache環境的東西。嘗試使用簡單的WSGI腳本作爲測試URL獲取的基準:

import sys 
import urllib  

def application(environ, start_response): 
    page_text = urllib.urlopen("http://www.google.com/").read() 
    start_response('200 OK', [ 
    ('Content-Type', 'text/html'), 
    ('Content-Length', str(len(page_text))), 
    ]) 
    yield page_text 
+0

我在httpd.conf中添加了虛擬主機配置,它起作用。我不知道爲什麼。謝謝你的幫助。 – amazingjxq 2011-05-31 13:15:10

相關問題