1

web2py で環境ごとに DB 接続をセットアップするための推奨される方法を使用しています。

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 構成を使用しているため、db 接続が失敗します。

同様に、スクリプトを実行しようとすると、同じエラーが発生します。これは私の最後の試みです:

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、2 つの環境間で異なる点を特定します。「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

今はうまくいくはずですが、私はこれに陥りました:postgresqlデータベースを使用してweb2pyスケジューラーを実行できません

于 2015-02-06T13:58:10.127 に答える