如何解决使用apache和mod_wsgi部署Django站点后出现套接字错误?
| 我的网站中有一个后端函数,它将调用ѭ0来从url检索数据。部署后,除此功能外,所有其他功能均运行良好。调用此函数将得到[Errno socket error] [Errno -2] Name or service not known
。似乎找不到主机。
但是,如果我使用“ 2”来运行该站点,则此功能可以很好地工作。
我想知道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,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都在我的机器上。这有问题吗?
解决方法
这很可能是权限问题或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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。