程序要产生并输出一个100万行左右的JSON数据(大约100MB),按照常规的方法,先在内存中准备好这100万行数据然后输出,服务器用的是Apache + mod_wsgi,一访问服务端就挂了。
查了一下,得知为了避免占用大量的内存导致服务器进程崩溃,最好采用迭代器的方法,如下代码段:
def home(request, epoch=None): client_ip = request.META['REMOTE_ADDR'] if '*' in settings.ALLOWED_IPS or (client_ip and client_ip in settings.ALLOWED_IPS): # default epoch is 60 seconds ago if not epoch: epoch = int(time.time() - 60) else: epoch = int(epoch) def product_json(): rows = Details.objects.filter(time_collected__gte=epoch).order_by('auction_id') total_number = rows.count() yield '{"epoch": %d, "returned_number": %d, "data": [' % (epoch, total_number) i = 0 for row in rows: i += 1 if i < total_number: yield json.dumps(row.to_dict()) + ', ' else: yield json.dumps(row.to_dict()) yield ']}' return HttpResponse(product_json()) else: return HttpResponse(json.dumps({'error': 'Your IP is banned.'}))
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢