每个环境的web2py配置不适用于调度程序/脚本

时间:2012-08-10 06:14:21

标签: python web2py

我一直在使用推荐的方法在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访问之外应用的环境注入配置?

2 个答案:

答案 0 :(得分:0)

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

{{=response.toolbar()}}

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

答案 1 :(得分: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