作者aiweisen (教授...我想毕业)
看板Python
标题[问题] django request 实作queue的问题
时间Mon Jun 8 17:13:33 2015
各位大家好
是这样子的
我目前用的server 环境是 django1.4 + python 2.7
是前人(已毕业学长)所写的server
那个server只是单纯做 上传 与下载档案 的功能
现在使用他写的server 偶尔会发生奇怪的事
就是有时会发生 如果同时有2个client做上传 或下载档案的时候 整个server就会卡住
但又有的时候同时上传跟下载"又"不会发生卡住
後来被老师钉了一下就说 那就是你们毕业的学长当初偷懒
没有在server上写request queue跟释放记忆体的机制
回头看了看程式码 里面的确没看到有关queue的程式码
现在我要帮我们学长收拾烂摊子
也就是 如果server同时收到多个request的时候
就先把这些request先queue起来 接着再依序处理queue在里面的request (呼叫函式)
response也是同样道理
但是我碰django+python的时间 没有比碰java来的久
请问有没什麽推荐的网站 或者是关键字符合我的需求 可以让我拜读一下
我有google到类似的功能是 Celery 这个套件
请问这个套件 能完成我要的需求吗?
--
作者 MicroGG (La new总冠军) 看板 Japan_Travel
标题 [问题] 温泉旅馆的儿童人头算法?
1F:→ robler:问问题然後自称拎背这样好吗 有点礼貌ok?04/11 16:32
2F:→ penan:骨科大 XD04/11 16:34
3F:→ MicroGG:你不懂,我有苦衷,我不说拎杯会被乡民骂..04/11 16:36
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.138.150.24
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1433754819.A.405.html
4F:→ uranusjr: 如果前面有用正规的 WSGI server 应该不会发生这种事 06/08 17:40
5F:→ uranusjr: 他该不会是用 runserver 跑的吧 06/08 17:41
没错 我们server是用runserver跑的= =
请问这样还有救吗?
6F:推 MacPerson: 架起来吧..... 06/08 20:37
7F:推 MacPerson: Django最近出了一本中文教学手册,买一本吧 06/08 20:59
8F:推 loner10: 请教MacPerson大..书名是? 06/08 21:18
9F:推 MacPerson: It's Django--用 Python 迅速打造 Web 应用 06/08 21:27
终於有中文书了 这本书应该有教说架在自己Server上吧?
11F:→ uranusjr: 话说既然是用 runserver 其实你们老师也是不懂嘴炮嘛 06/09 00:28
WSGI看了有点头晕 不过好像必须要用这种方式才行?
我自己看过去的感觉如下(还没有详细读熟) 有错帮忙纠正
我们目前server是架在一台6万多块的电脑上 使用runserver的方式来执行
有google到说 runserver只是为了测试用
我们django server的app里面的function都是用下面类似的方式来做httpresponse
def submit(request):
//do something
return HttpResponse('ret=0')
现在要有queue的应用 那就是要用一楼说的 使用正规的WSGI来执行server
也就是要变成 django +wsgi +apache 这样就不用去管queue的问题
但是如果使用这种方式 原本的httprespone就要全部修改掉 变成类似下面这种
def simple_app(environ, start_response):
setup_testing_defaults(environ)
status = '200 OK'
headers = [('Content-type', 'text/html; charset=utf-8')]
start_response(status, headers)
ret = '<script>alert("hello world")</script>\n'.encode('utf-8')
return [ret]
请问我这样想是正确的吗= =?
12F:推 qas612820704: django1.4耶 现在不都1.8了 06/09 13:46
是阿 我之前为了用google的GCM在django上 有升到1.7
但是怕server不稳 还是退回到1.4
13F:→ uranusjr: 什麽都不用改, 你把原本的 runserver 停掉, 用我给的连 06/09 17:42
14F:→ uranusjr: 结接上 web server(例如 Apache + mod_wsgi)就会直接 06/09 17:42
15F:→ uranusjr: 能动了。文件好好看, 试着照做, 不要乱找资料乱猜。 06/09 17:43
对不起 让我跳针在问一下
今天不用实作request queue or response queue 在django上的原因
是因为apache这种正规的server
会自动帮处理同时多个request或回覆多个response
当流量超过上限时自动放入queue里面
只是今天入药结合apache跟django 就必须透过WSGI帮忙 是吧?
16F:→ uranusjr: 细节有点不同,但基本上是这样没错 06/10 12:32
谢谢 那我就朝这方面去试
17F:推 timTan: 用 runserver 架起来的 django 可是弱到爆呢.... 06/10 16:41
哈...也是呢 好险还没出去工作 不然真的丢脸丢大了(苦笑
已经有成功把django架到apache上了
(我是用进入到apache\bin的资料夹下 执行httpd -k install)
我是先用win8 +apache2.4来测试 但是还有一些没办法适应
像是在跑runserver的时候 可以透过cmd的方式去看到每一笔request到server上的讯息
但是转到apache上的时候 却没有这些的资讯可以看 有点烦恼
(还是我用的版本太新 用2.2就行了?)
==============================================================================
话说 我移到apache後 我後台的管理介面就跑掉了
http://i.imgur.com/A2N4280.png
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
#'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
我不知道哪边需要修改....冏
18F:→ uranusjr: 上面那篇文件最下面有个连结写 How to use Django with 06/11 16:02
19F:→ uranusjr: Apache and mod_wsgi,你按进去看,里面就有写了... 06/11 16:02
抱歉 眼残了 看到了
※ 编辑: aiweisen (140.138.150.24), 06/15/2015 21:26:29
20F:推 zz654456: 我的问题跟你好类似 我也是学生 我寄站内信给你你看一下 07/10 16:53