Django部署到apache和mod_wsgi后出现套接字错误?

2024-05-14 19:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我的站点中有一个后端函数,它将调用urllib.urlopen(url))从url中检索数据。部署后,除此之外,其他所有功能都运行良好。调用此函数将导致[Errno socket error] [Errno -2] Name or service not known。好像找不到主人了。在

但是如果我使用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
        }

这是回溯:

^{pr2}$

在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>

python3和python2.7都在我的机器上。这是个问题吗?在


Tags: 函数urlhome站点urllibdirectorydomword
1条回答
网友
1楼 · 发布于 2024-05-14 19:51:39

这可能是由于您的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

相关问题 更多 >

    热门问题