0

NGINXとuWSGIの背後でDjangoアプリケーションを実行しようとしていdatetime.today()ますが、uWSGIサーバーが今日の代わりに起動されたときから日時を返すのに問題があります。アプリの構成は次のとおりです。

    <uwsgi>
     <plugin> python </ plugin>
       <socket> 127.0.0.1:3030 </ socket>
       <chdir> / opt / ETS / bin </ chdir>
       <pythonpath> .. </ pythonpath>
       <module> instance </ module>
     </ uwsgi>

uWSGIの設定は、変更なしのデフォルトです。

日時を再び機能させるにはどうすればよいですか?

明確化:URLへのアクセス時にこの関数で呼び出しが行われます

def create_file_header(name, ext):
    return {'Content-Disposition': 'attachment; filename=%s-%s.%s' % (name, datetime.date.today(), ext) }

呼び出しはurlpattenからです:

(r'^ Loading_details / basic2 / $'、ExpandedResource(ReadLoadingDetailHandler、authentication = authentication、
                                               headers = create_file_header('loading-details'、'csv'))、
 FORMAT_CSV、 "api_loading_details_basic_auth")、

ApacheWSGIを使用して同じサーバーでホストされている場合に機能しました

4

2 に答える 2

6

datetime.date.today()モジュールグローバルに保存する場合、サーバーの起動時に1回だけ実行されます。これはサーバーの問題ではなく、コードの問題です。

今日の日付を表示する結果が必要datetime.date.today()な場合は、起動時ではなく、今日の日付が必要なときに呼び出し可能ファイルを呼び出す必要があります。

関数を呼び出しtoday()たとしても、その関数自体がモジュールのロード時にのみ呼び出される場合は、1回だけ実行されます。

URLパターンは1回だけ生成されます。headersキーワード引数は、そのURLにアクセスするたびに実行されるのではなく、モジュールのロード時にのみ実行されます。ヘッダーの作成をビュー自体に移動する必要があります。

于 2013-02-25T10:33:45.587 に答える
0

uWSGIの起動時間ではなく、間違ったタイムゾーンではありませんか?uWSGIはPythonの内部には触れません(一部の領域で明示的に要求されていない限り)。

于 2013-02-25T12:56:28.850 に答える