1

MSSQL サーバーを使用して、django アプリを Azure に公開しようとしています。pyodbc で django-azure-pyodbc を使用して接続していますが、ローカルで動作している間、mssql で公開するたびに、公開は成功しますが、内部サーバー エラーが発生します。あらかじめパッケージ化されている sqllite3 サーバーで公開すると、機能します。Python 3.4、Django 1.8.4、pyodbc 3.0.10、および django-pyodbc-azure 1.8.3.0 で仮想環境を使用しています。私のsettings.pyファイルは次のとおりです。

DATABASES = {
   'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'USER': 'u_name',
        'PASSWORD': 'p_word',
        'HOST': 'host.database.windows.net',
        'PORT': '',
    }
}

それが問題であることを期待して、webapp の発信 IP アドレスをサーバーに追加しましたが、そうではありませんでした。診断ログを確認したところ、500 エラーよりも詳しい説明が見つかりましたが、よくわかりません。

 ModuleName FastCgiModule

 Data1 FASTCGI_RESPONSE_ERROR

WSGI ハンドラーの読み取り中に Data2 エラーが発生しました: トレースバック (最新の呼び出しが最後): ファイル "D:\home\site\wwwroot\env\lib\site-packages\sql_server\pyodbc\base.py"、行 14、インポート pyodbc 内as Database ImportError: DLL の読み込みに失敗しました: %1 は有効な Win32 アプリケーションではありません。上記の例外の処理中に、別の例外が発生しました: Traceback (最新の呼び出しが最後): File "D:\Python34\Scripts\wfastcgi.py", line 711, in main env, handler = read_wsgi_handler(response.physical_path) File " D:\Python34\Scripts\wfastcgi.py"、568 行目、read_wsgi_handler return env、get_wsgi_handler(handler_name) ファイル "D:\Python34\Scripts\wfastcgi.py"、541 行目、get_wsgi_handler handler = handler() ファイル " .\ptvs_virtualenv_proxy.py"、120 行目、get_venv_handler ハンドラー = get_wsgi_handler(os.new new_class.add_to_class('_meta', Options(meta, **kwargs)) ファイル「D:\home\site\wwwroot\env\lib\site-packages\django\db\models\base.py」、324行目、 add_to_class value.contribute_to_class(cls, name) ファイル "D:\home\site\wwwroot\env\lib\site-packages\django\db\models\options.py" の 250 行目、contribute_to_class の self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) ファイル "D:\home\site\wwwroot\env\lib\site-packages\django\db__init__.py"、36 行目、getattr で getattr ( connections[ DEFAULT_DB_ALIAS], item) ファイル "D:\home\site\wwwroot\env\lib\site-packages\django\db\utils.py"、240 行目、getitembackend = load_backend(db['ENGINE']) ファイル "D:\home\site\wwwroot\env\lib\site-packages\django\db\utils.py"、111 行目、load_backend で import_module('%s .base' % backend_name) File "D:\Python34\lib\importlib__init__.py", line 109, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 2254, in _gcd_import File ""、2237 行目、_find_and_load ファイル内 ""、2226 行目、_find_and_load_unlocked ファイル内 ""、1200 行目、_load_unlocked ファイル内 ""、1129 行目、_exec ファイル内 ""、1471 行目、exec_module ファイル内 ""、321 行目、_call_with_frames_removed ファイル「D:\home\site\wwwroot\env\lib\site-packages\sql_server\pyodbc\base.py」の 16 行目、raise ImproperlyConfigured("pyodbc モジュールの読み込みエラー: %s" % e) django.core.exceptions.ImproperlyConfigured: pyodbc モジュールの読み込みエラー: DLL の読み込みに失敗しました: %1 は有効な Win32 アプリケーションではありません。StdOut: StdErr:

4

3 に答える 3

0

問題を再現することはできませんが、パッケージとバージョンでテストを行いました。そして、Visual Studio を使用して Django アプリケーションを Azure Web Apps に発行しましたが、問題なく動作しました。参考までに、私の手順は次のとおりです。 1、空の Web アプリを作成し、ローカル Git リポジトリからデプロイをセットアップします。

2,Visual Studio で Django アプリケーションを作成し、Python 3.4 で仮想環境を追加してから、Python パッケージをインストールします。内容は次のrequirements.txtとおりです。 Django==1.8.4 pyodbc==3.0.10 django-pyodbc-azure==1.8.3.0

3,データベース設定を Azure 上の MSSQL に変更し、F5 を押してローカルでテストします。

4,Djangoアプリケーションのプロジェクト名を右クリックし、クリックpublishしてデプロイ

ここに画像の説明を入力

デプロイが完了すると、デフォルトのブラウザーでアプリケーションが自動的に参照されます。

于 2015-11-04T05:12:40.327 に答える