OpenERP代码在后台运行时抛出异常

时间:2012-10-17 14:14:26

标签: python screen locale openerp python-unicode

我不知道是否应该在serverfault或stackoverflow下发布。我不知道它是否是我服务器上的语言环境问题,或者它是python还是正在运行的OpenERP应用程序。

我有一个OpenERP系统,我遇到了一个非常奇怪的问题。

在openERP模块中,有一些“打印”行,各种开发人员用它来调试应用程序。

喜欢这些:

print "Value: %s" % variable

 print "Value: " + str(variable)

如果我在普通终端中启动OpenERP,它将在前台运行良好,并在控制台中打印调试日志和打印件。该应用程序从未给我一个例外。

现在问题了!

之前我已经在屏幕上启动了应用程序,以便在应用程序运行时我可以将其分离并关闭与服务器的连接。

在“屏幕”

中运行时,代码不会抛出任何异常

而不是我希望拥有init.d脚本的屏幕。我制作了这个剧本:

#!/bin/sh

# Configuration variables for openerp
DAEMON="/opt/openerp-server-6.0.3/bin/openerp-server.py"
ARGS="--config=/opt/openerp-server-6.0.3/openerp-server.conf"
NAME="openerp"
USER="openerp"
DESC="openerp"
PIDFILE="/var/run/$NAME.pid"

# Startup alternatives
case "$1" in
        start)
                echo "Starting ${DESC}"
                start-stop-daemon --start --background --pidfile $PIDFILE --chuid $USER --make-pidfile --exec $DAEMON -- $ARGS
                ;;
        stop)
                echo "Stopping ${DESC}"
                start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
                echo "${NAME}."
                ;;
        *)
                echo "Usage: start|stop"
        ;;
esac

脚本有效,它启动和停止服务器。

当我使用从excel文件导入数据的模块时,我得到了这个异常。我也在代码的其他地方得到例外,它试图打印一个包含瑞典字母'åäö'的字符串。

  

UnicodeEncodeError:'ascii'编解码器无法对字符u'\ xe4'进行编码   位置3:序数不在范围内(128)

我认为这是'start-stop-daemon'命令改变了语言环境或某些东西。因此,我没有使用参数'--background'强制应用程序到后台,而是尝试了这个:

start-stop-daemon --start --pidfile $PIDFILE --chuid $USER --make-pidfile --exec $DAEMON -- $ARGS &> /dev/null

这解决了UnicodeEncodeError。我想到的一切快乐。但!

现在我收到输入/输出错误

IOError: [Errno 5] Input/output error

生成此代码的代码

print pay_order

'pay_order'变量是一个有时包含'åäö'的字符串。

我无法理解为什么它会像这样。

1 个答案:

答案 0 :(得分:0)

在使用print调试类似于您描述的错误时,我遇到了Unicode错误。

我认为您应该从根本上解决问题:使用grepprint中找到包含addons命令的行,并使用#将其注释掉。 print命令从未在标准模块中使用。