小编Eli*_*ght的帖子

4
推荐指数
2
解决办法
5086
查看次数

Apache套接字没有关闭?

我有一个使用CherryPy编写的Web应用程序,它在本地运行127.0.0.1:4321.我们使用mod-rewrite和mod-proxy让Apache充当反向代理; Apache还处理我们的SSL加密,最终可能用于传输所有静态内容.

这一切都适用于小型工作负载.但是,我最近urllib2编写了一个压力测试脚本,可以模拟100个客户端的工作负载.一段时间后,每个客户端从Apache获得503错误,表明Apache无法连接127.0.0.1:4321.CherryPy运行正常,但我的Apache错误日志显示如下行:

[Thu Oct 02 12:55:44 2008] [error] (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : proxy: HTTP: attempt to connect to 127.0.0.1:4321 (*) failed

谷歌搜索此错误表明Apache可能已用完套接字文件描述符.由于我只运行了100个客户端,这意味着我的urllib2连接和Apache 之间的连接没有被关闭(我肯定是在调用.close()返回值urlopen),还是在Apache和CherryPy之间.

我已经确认我的urllib2请求是发送HTTP Connection: close标头,尽管KeepAlive On如果重要的话配置了Apache .

如果重要,我使用的是Python 2.5,Apache 2.2,CherryPy 3.0.3,并且服务器在Windows Server 2003上运行.

那么我的下一步是什么阻止这个问题呢?

python apache mod-proxy cherrypy urllib2

4
推荐指数
2
解决办法
4945
查看次数

使用Java连接到Oracle集群

我们有一对Oracle服务器,它们被设置为集群中的节点(如果我的术语已经过时,我会道歉).在我的tnsnames.ora文件中,我们有一个看起来像的条目

EXAMPLE.GOV =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.5)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = example.gov)
    )
  )
Run Code Online (Sandbox Code Playgroud)

这与我使用该tnsnames.ora文件的程序连接时有效.但是,我也有一个Java程序,它使用oracle.jdbc.pool.OracleDataSource类来建立连接

public static Connection connect() throws Exception {
    OracleDataSource ods = new OracleDataSource();
    ods.setDriverType("thin");
    ods.setServerName("1.2.3.4");
    ods.setDatabaseName("example");
    ods.setPortNumber(1521);
    ods.setUser("scott");
    ods.setPassword("tiger");
    return ods.getConnection();
}
Run Code Online (Sandbox Code Playgroud)

它只是直接连接到其中一个节点.我想改为使用负载平衡tnsnames.ora方法,它使用负载平衡或任何连接到其中一个节点的任何东西,这样如果其中一个节点关闭,那么它将自动连接到另一个节点.

由于我只有两个节点,我可以轻松地尝试打开与第一个节点的连接,然后如果不起作用则打开与第二个节点的连接.但是,我想知道是否有更正确的方法来做到这一点.

我看到有一个setTNSEntryName参数,但由于我tnsnames.ora在一个非标准的地方,我需要设置TNS_ADMIN环境变量,我不确定我甚至可以在Java中做什么.我也不确定这在任何情况下都会有效.

有谁知道如何从Java程序连接到Oracle节点集群?

java oracle jdbc cluster-computing

4
推荐指数
1
解决办法
4108
查看次数

dict.update会影响函数的argspec吗?

import inspect
class Test:
  def test(self, p, d={}):
    d.update(p)
    return d
print inspect.getargspec(getattr(Test, 'test'))[3]
print Test().test({'1':True})
print inspect.getargspec(getattr(Test, 'test'))[3]
Run Code Online (Sandbox Code Playgroud)

我希望Test.test的argspec不会改变,但是因为dict.update它会改变.为什么?

python inspect

4
推荐指数
1
解决办法
263
查看次数

如何为正在删除和重新创建的表保留GRANT?

我正在进行一个相当新的项目,我们仍在修改Oracle 11g数据库表的设计.因此,我们经常删除并重新创建表,以确保每当我们进行更改时,我们的表创建脚本都按预期工作.

我们的数据库由2个模式组成.一个模式有一些带INSERT触发器的表,这些表有时会将数据复制到第二个模式中的表中.这就要求我们必须登录到具有管理员帐户数据库,如sysdbaGRANT进入第一模式,以必要的表上第二个架构,如

GRANT ALL ON schema_two.SomeTable TO schema_one;
Run Code Online (Sandbox Code Playgroud)

我们的问题是,每次我们作出改变到我们的数据库设计,并希望删除并重新创建数据库表中,我们访问GRANT-ed来schema_one就走了,当表被删除.因此,这创建了另一个恼人的步骤,其中我们必须使用管理员帐户登录以在GRANT每次删除和重新创建这些表中的一个时重新访问.

这不是一个大问题,但我希望从我们的开发和测试程序中尽可能多地消除步骤.有没有办法以GRANT这样的方式访问表:GRANT-ed权限在被删除然后重新创建的表中存活?如果这是不可能的,那么还有更好的方法吗?

sql oracle grant oracle11g

4
推荐指数
2
解决办法
5005
查看次数

为什么getPreventDefault()有效,但defaultPrevented却没有?

我正在开发一个Firefox扩展,我一直看到以下警告:

defaultPrevented

但是,对于我正在尝试做的事情,它似乎getPreventDefault()不起作用,而Browser确实如此.对于简化的代码片段,这是我在fooEvent has fired上下文中运行时放入Firefox浏览器暂存器的内容:

window.addEventListener('fooEvent', function (event) { 
    console.log('fooEvent has fired');
    event.preventDefault();
}, true, true);
Run Code Online (Sandbox Code Playgroud)

那么在我的浏览器控制台(按Shift + Ctrl + k时得到的那个)中运行以下代码:

e = document.createEvent('Event');
e.initEvent('fooEvent', true, true);
document.dispatchEvent(e);
console.log('after dispatch', e.defaultPrevented, e.getPreventDefault());
Run Code Online (Sandbox Code Playgroud)

我可以after dispatch false true在我的Javascript控制台中看到该消息,因此我知道该事件已被捕获.但我看到的消息defaultPrevented表明,如果正确返回true ,getPreventDefault()它仍然是假的defaultPrevented.但Firefox仍会显示弃用警告!

我想避免使用已弃用的API调用,因为我不想让Firefox升级来破坏我的扩展.(有一个打开的票证可以删除已弃用的API调用,虽然看起来它可能需要一段时间才能完成.)我做错了什么?

javascript firefox events firefox-addon dom-events

4
推荐指数
1
解决办法
7559
查看次数

尽早初始化cherrypy.session

除了一个细节,我喜欢CherryPy的会话API.而不是说cherrypy.session["spam"]我想能够说出来session["spam"].

不幸的是,我不能简单地from cherrypy import session在我的一个模块中使用全局,因为cherrypy.session直到第一次发出页面请求时才会创建对象.有没有办法让CherryPy立即初始化其会话对象而不是第一页请求?

如果答案是否定的,我有两个难看的选择:

首先,我可以做这样的事情

def import_session():
    global session
    while not hasattr(cherrypy, "session"):
        sleep(0.1)
    session = cherrypy.session

Thread(target=import_session).start()
Run Code Online (Sandbox Code Playgroud)

这感觉就像一个大块头,但我真的很讨厌cherrypy.session["spam"]每次写作,所以对我来说这是值得的.

我的第二个解决方案是做类似的事情

class SessionKludge:
    def __getitem__(self, name):
        return cherrypy.session[name]
    def __setitem__(self, name, val):
        cherrypy.session[name] = val

session = SessionKludge()
Run Code Online (Sandbox Code Playgroud)

但这感觉就像一个更大的kludge,我需要做更多的工作来实现其他字典功能,如 .get

所以我绝对更喜欢一种简单的方法来自己初始化对象.有谁知道如何做到这一点?

python cherrypy

3
推荐指数
1
解决办法
2315
查看次数

一个Apache上的多个Django管理站点...当我登录一个时,我会从另一个登录

我有两个Django项目和应用程序在同一个Apache安装上运行.项目和两个应用程序都具有相同的名称,例如myproject.myapplication.它们分别位于单独命名的目录中,因此它看起来像.../dir1/myproject/myapplication和.../dir2/myproject/myapplication.

关于实际面向公众的应用程序的一切工作正常.当我登录任何一个管理站点时,它似乎没问题,但如果我切换并在对方管理站点上做任何工作,我将退出第一个.简而言之,我无法立即登录这两个管理站点.任何帮助,将不胜感激.

python django admin

3
推荐指数
1
解决办法
1392
查看次数

SCons问题 - 不了解Variables类

我正在为一个项目开发一个SConstruct构建文件,我正在尝试从Options更新为Variables,因为Options已被弃用.我不明白如何使用变量.我有0 python经验,这可能有助于此.

例如,我有这个:

opts = Variables()
opts.Add('fcgi',0)
print opts['fcgi']
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

AttributeError: Variables instance has no attribute '__getitem__':
Run Code Online (Sandbox Code Playgroud)

不知道这应该如何工作

python variables scons

3
推荐指数
1
解决办法
1565
查看次数

检测特定图像何时完成加载

我在网页上有一个图像,它由服务器端CGI程序动态生成.定期刷新该图像和/或根据用户输入改变该图像.所以我有一个类似的Javascript函数

// <img id="screen" src=""> is elsewhere in the page
function reloadImage() {
    $("#screen").attr("src", make_cgi_url_based_on_form_inputs());
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但有时加载图像需要一段时间.因此,我希望某些消息显示为"正在加载图像...",但是当图像加载并在浏览器中显示时,该图像会消失.

是否有任何类型的Javascript事件可以做到这一点?或者,有没有其他方法可以加载/更改/更新图像并通过Ajax或其他任何方式检测加载何时完成?

javascript jquery javascript-events

3
推荐指数
1
解决办法
6017
查看次数