1

我一直在使用推荐的方法在 web2py 中为每个环境设置数据库连接:

settings = dict()
if request.env.http_host == 'http://127.0.0.1:8000'
     settings['development']=True
else:
     settings['development']=False
if settings['development']:
     db = DAL('sqlite://....')
else:
     db = DAL('mysql://....')

在非开发环境中使用调度程序时,数据库连接失败,因为它使用端口 8000 配置。

同样,在尝试运行脚本时,我也会遇到相同的错误。这是我最后一次尝试:

python web2py.py -S app -M -N -R -L options.py -P 443 applications/testscript.py

"Can't connect to MySQL server on '127.0.0.1' (10061)"�

是否有推荐的方法来为每个环境注入一个将在 Web 访问之外应用的配置?

4

2 回答 2

0

在页面上临时插入以下内容:

{{=response.toolbar()}}

然后在开发和生产中,单击“请求”按钮并检查其中的值request.env以识别两个环境之间的不同之处。一些可能的候选者是“server_signature”、“server_software”和“web2py_path”。

于 2012-08-10T08:10:25.050 回答
0

我也有同样的担忧,我首先想到的是request.env.server_name. 但:

  • 启动调度程序时此变量不存在
  • 它可以被替换,request.env.cmd_options.server_name但首先,服务器不存在这个,其次,在它启动后,调度程序不再找到它......

然后我找到了这个 Q/A 并尝试按照 Anthony 的建议解决它:

  • 启动调度程序时“server_signature”不存在
  • 启动调度程序时“server_software”不存在

最后,“web2py_path”完成了这项工作,即使对我来说,针对完整安装路径进行测试并不是一个真正的“干净”解决方案......

if request.env.web2py_path == '/your/path/on/server/to/web2py'
    settings['development']=False
else:
    settings['development']=True

现在它应该可以工作了,但我陷入了这个问题:Can not run the web2py scheduler using postgresql database

于 2015-02-06T13:58:10.127 回答