3

私はdjangoで作業しており、テストサーバーが必要なFacebook統合を行っています。私は Apache と .pyc ファイルのキャッシングに関して多くの問題を抱えてきまし

その解決策は機能しますが、そのようなファイルの Apache キャッシュを無効にするオプションがあるかどうか知りたいです。サーバーの再起動が問題になる可能性があります。

編集:

django.wsgi コードは次のとおりです。

path = '/not/actual/path'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'notactualproj.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
4

1 に答える 1

7

「バイトコードの問題」を解決する方法

.pycそもそもなぜこれらの不要なファイルがそこにあるのかを理解する必要があります (これらはリポジトリにありますか? それらは無視する必要があります)。

コメントに記載されているように、.pyc問題を引き起こすダングリング ファイルがある場合は、.pyc新しいコードをサーバーにデプロイするときに、プル プロセスの一部としてすべてのファイルを削除することを組み込むことができます。アプリを実行すると、モジュールのインポート時に必要なものが再作成されます。


ここで、バイトコードを生成したくない場合はPYTHONDONTWRITEBYTECODE環境変数を使用できますが、これはかなり過剰な解決策と思われるため、お勧めしません。

古いバージョンのコードをプルしているように見える Apache を解決する方法。

さて、ここで問題になっている 2 つの問題を区別する必要があります。

  • Python によって生成された古いバイトコード ファイル (.pycファイルなど)。これは、ファイルをモジュールに置き換えるなどの特定のケースで問題を引き起こす可能性がありますが、多くの場合、心配する必要はありません。
  • Mod WSGI が、アップロードされた新しいコードをリロードしない。これは、Mod WSGi を実行しているモードによって異なります。通常の症状は、ページにアクセスすると、新しいバージョンまたは古いバージョンのコードがランダムにプルされるように見えることです。

最初の問題を解決するには、未使用のバイトコード ファイルを削除するだけです。しかし、繰り返しますが、これはおそらく問題の原因ではありません。

2 番目の問題を解決するには、2つの解決策があります。

  • 新しいコードをアップロードするときに apache を再起動します。を使用するapache2ctl -k gracefulと、これはユーザーに対して透過的になり、共有ホスティングを使用していない限り、「サーバーの再起動が問題になる可能性がある」理由がわかりません。
  • コードのリロードを使用して、mod_wsgiドキュメントを確認することをお勧めします。

バイトコードが問題だとは思いません。おそらくコードのリロードが問題です。

于 2012-10-01T11:02:33.250 に答える