我正在运行Django应用程序.以前在Apache + mod_python下,它一切都好.切换到Lighttpd + FastCGI.现在我随机获得以下异常(地点和出现的时间似乎都不可预测).由于它是随机的,并且只在切换到FastCGI之后出现,我认为它与某些设置有关.
谷歌时发现了一些结果,但它们似乎与设置maxrequests = 1有关.但是,我使用默认值,即0.
任何想法在哪里寻找?
PS.我正在使用PostgreSQL.也可能与此相关,因为在进行数据库查询时会出现异常.
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 86, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py", line 140, in root
if not self.has_permission(request):
File "/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py", line 99, in has_permission
return request.user.is_authenticated() and request.user.is_staff
File "/usr/lib/python2.6/site-packages/django/contrib/auth/middleware.py", line 5, in __get__
request._cached_user = get_user(request)
File "/usr/lib/python2.6/site-packages/django/contrib/auth/__init__.py", line 83, in get_user
user_id = request.session[SESSION_KEY]
File "/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/base.py", line 46, in __getitem__
return self._session[key]
File "/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/base.py", line 172, in _get_session
self._session_cache = self.load()
File "/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/db.py", line 16, in …
Run Code Online (Sandbox Code Playgroud) 我在Apache + mod_python上运行Django应用程序.当我对代码进行一些更改时,有时它们会立即生效,有时则不会生效,直到我重新启动Apache.但是我真的不想那样做,因为它也是一个运行其他东西的生产服务器.还有其他方法可以强迫吗?
为了说清楚,因为我看到有些人弄错了,我说的是生产环境.对于开发,我当然使用Django的开发服务器.
假设我有一个"报告"页面,可以通过Javascript进行自定义.假设我有start_date,end_date和type("simple"或"full")可以更改.现在我希望地址栏始终包含当前(自定义)视图的"永久链接",以便用户可以轻松复制它.
如果我这样做没有Ajax,我只想用类似"/报告/?起始日期= 2010-01-01&END_DATE = 2010-01-31&类型=全"作为一个固定链接.但由于我想从Javascript更新URL,我需要使用锚点(#),否则需要重新加载整个页面.
在这种情况下,是否有关于如何生成永久链接的最佳实践?我会选择"/ report /#start_date = 2010-01-01,end_date = 2010-01-31,type = full"之类的东西,然后用Javascript解析那个东西.有没有更好或更普遍接受的方式来处理这个问题?
另外,有没有更好的方法来处理Javascript方面而不是简单地解析所有内容?
谢谢.
我有一个带有3个分片的MongoDB分片设置:shard0000,shard0001和shard0002。现在运行shard0002的计算机已关闭,这导致我的所有查询均失败。我想从设置中暂时删除shard0002,并继续使用前两个分片。假设我只使用位于前两个分片中的未分片集合,那应该可行,对吗?
我首先尝试的是:db.runCommand({removeshard: 'IP:PORT'})
这显然无济于事,因为它只是将分片置于排空模式,该模式永远不会终止(因为它已关闭)。然后,我尝试连接到配置服务器,并db.shards.remove({_id: 'shard0002'})
在配置数据库上进行操作,然后重新启动mongos,以便它重新加载配置。现在,无论何时我尝试做任何事情,我都会得到“找不到碎片:shard0002”。
有什么方法可以让Mongo知道我暂时不关心该碎片,然后在可用时重新启用它。
我正在使用FastCGI和lighttpd运行Django应用程序.
在决定maxrequests,maxspare,minspare,maxchildren使用什么值时,有人可以解释一下我应该考虑什么吗?
这些选项没有太多记录,但似乎非常重要.
不要只告诉我他们做了什么; 我想了解它们有什么含义以及我应该如何决定使用什么值.
谢谢.
我想在我的一个应用程序中包含Python脚本,这是用Python本身编写的.
我的应用程序必须能够调用外部Python函数(由用户编写)作为回调.必须对代码执行有一些控制; 例如,如果用户提供了语法错误的代码,则应用程序必须发出信号.
做这个的最好方式是什么?
谢谢.
编辑:问题不清楚.我需要一种类似于VBA事件的机制,其中有一个"声明"部分(用于定义全局变量)和带有脚本代码的事件,它们在特定点触发.
当我们的服务中有新数据可用时,我每天都会向客户发送通知电子邮件.不,它不是垃圾邮件,它是客户要求的通知,可以关闭 - 以防万一你想知道.:)
我注意到有些网站有一个noreply@domain.com地址,用于发送所有通知?
为什么不使用支持电子邮件别名的电子邮件地址.这样,如果有人回复通知(意味着他们有问题),它会直接转向支持.为什么甚至打扰解释"BTW,这封电子邮件不应该用于支持,请不要回复 - 使用别的东西而不是"当你可以同时指向同一个收件箱时?还是有其他原因让我失踪?
我有一个12列UNIQUE索引的表.\d sales
节目sales_uq UNIQUE, btree (a1, a2, a3, ... a12)
.
我做以下查询:
SELECT a1, a2, a3, ... a12 FROM sales GROUP BY a1, a2, a3, ... a12 HAVING count(1) > 1;
Run Code Online (Sandbox Code Playgroud)
我得到了一堆结果.怎么可能?!索引是否可能存在,但某种程度上是禁用的?或者是否存在NULL问题?或者使用浮点数(索引中的两列是类型double precision
)?
我正在为我的CSS/Javascript设置远期过期标题,以便浏览器在缓存后不会再次请求文件.我还有一个简单的版本控制机制,这样如果文件发生变化,客户端就会知道.
基本上我有一个模板标签,我做了类似的事情
<script type="text/javascript" src="{{ MEDIA_URL }}{% versioned "javascript/c/c.js" %}"></script>
这将成为
<script type="text/javascript" src="http://x.com/media/javascript/c/c.min.js?123456"></script>
.
模板标记打开一个文件javascript/c/c.js.v
,在该文件中找到版本号并将其附加到查询字符串.该版本由shell脚本(现在手动运行,可能会添加预提交挂钩)生成,该脚本检查文件是否已更改(使用git diff
).
这一切都很好,除了:
我想为图像实现相同类型的版本控制.但是图像可以从CSS引用 - 这是一个静态文件(由nginx提供) - 因此没有模板标记.
什么是更好的文件版本控制方法?
或者,我正在考虑用中间件替换模板标签,中间件在返回响应之前更改所有链接.这比模板标签更好,模板标签可能会被错误地省略.但仍然无法解决CSS引用的图像问题.
此外,我知道将版本作为查询字符串的一部分可能会导致某些代理没有缓存文件的麻烦 - 所以我考虑将版本作为文件名的一部分 - 例如javascript/c/c.123456.js
.
注意:看起来没有办法使用Django解决这个问题(显然 - 因为我甚至没有通过Django提供CSS).但必须有一个解决方案,可能涉及一些nginx技巧.
我想编写一个直接执行HTTP请求的单元测试(而不是使用django.test.client.Client).
如果你很好奇为什么 - 这是因为我想测试我从我的Django应用程序公开的Thrift-over-HTTP API - 我想在单元测试中使用Thrift客户端.
问题是在测试期间,服务器实际上并未运行.使用django.test.client.Client时,它只是调用视图函数而不是实际发出HTTP请求.(如果我错了,请纠正我.)
那么强制测试框架启动HTTP服务器的最佳方法是什么?
我尝试编写一个类似这样的bash脚本:
./manage.py testserver --addrport 7000 &
PID=$!
sleep 5
./manage.py test --no-input
kill $PID
Run Code Online (Sandbox Code Playgroud)
但这很麻烦(并没有真正起作用)因为1)我需要睡眠(否则测试将在测试服务器初始化DB之前启动)和2)测试将尝试再次初始化数据库(之后) testserver已经初始化了它).
还有其他解决方案吗?
谢谢.