Gevent撞毁了蟒蛇.核心转储(引用计数太小).怎么了



我正试图为一个位置的自动完成api构建一个代理/缓存服务器。以下是简化的代码,几乎在我试图查询服务器的所有时间都会显示错误:

#!/usr/bin/python
import gevent
from gevent import monkey
from gevent.wsgi import WSGIServer
monkey.patch_all()
import urllib2
import urlparse
import json
def requestHandler(env, start_response):
    start_response('200 OK', [('Content-Type', 'text')])
    parameters = urlparse.parse_qs(env['QUERY_STRING'])
    if 'search' in parameters:
        searchString = parameters['search'][0]
        # Query the auto-completion server
        json_results = urllib2.urlopen('http://autocomplete.wunderground.com/aq?query=' + searchString).read()
        results = json.loads(unicode(json_results, "ISO-8859-1"))
        finalResult = ''
        for result in results['RESULTS']:
                finalResult += result['name'] + ';' + result['c'] + ';' + result['zmw'] + ';' + result['tzs'] + ';'
        return [finalResult.encode('utf-16')]
    else:
        return ['ERROR']
server = WSGIServer(('', 8888), requestHandler)
print 'Server running on port 8888...'
server.serve_forever()

有时它对第一个查询有效,但第二次我请求它时,它会崩溃。有时它第一次就崩溃了。这是我得到的错误:

Modules/gcmodule.c:348: visit_decref: Assertion "gc->gc.gc_refs != 0" failed.
refcount was too small
object  : <weakref at 0x9e0f194; to 'gevent.core.http_request' at 0x9e0a11c>
type    : weakref
refcount: 1
address : 0x9e0f194
Aborted (core dumped)

我的系统是:CentOS 6.3,Python 2.6.6,Gevent 0.13.8

有人知道可能出了什么问题吗?似乎是一些基本的东西导致了这种问题。。。

您可能应该将Gevent升级到1.0版本,因为已经修复了与垃圾收集相关的错误。

我也看到一些建议,在接受请求之前先睡一会儿。

最新更新