2017-05-03 6 views
1

私はこの質問の多くの反復を見てきました。GAE devappserver2 TypeError: - : 'datetime.datetime'と 'NoneType'のためのサポートされていないオペランドタイプ

dev_appserver.py app.yamlを実行している私はそうのようなエラーが出ます:

waxed_backend_1  | _run_file(__file__, globals()) 
waxed_backend_1  | File "/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 97, in _run_file 
waxed_backend_1  |  execfile(_PATHS.script_file(script_name), globals_) 
waxed_backend_1  | File "/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 899, in <module> 
waxed_backend_1  |  main() 
waxed_backend_1  | File "/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 895, in main 
waxed_backend_1  |  dev_server.stop() 
waxed_backend_1  | File "/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 775, in stop 
waxed_backend_1  |  metrics.GetMetricsLogger().Stop() 
waxed_backend_1  | File "/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/metrics.py", line 123, in Stop 
waxed_backend_1  |  total_run_time = int((Now() - self._start_time).total_seconds()) 
waxed_backend_1  | TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'NoneType' 

どのように1つのデバッグこれを疑問は何かに似ていますか?

class _MetricsLogger(object): 
    """Logs metrics for the devappserver to Google Analytics.""" 

    def __init__(self): 
    """Initializes a _MetricsLogger.""" 
    self._client_id = None 
    self._user_agent = None 
    self._runtimes = None 
    self._start_time = None 
    self._log_once_on_stop_events = {} 

    def Start(self, client_id, user_agent=None, runtimes=None): 
    """Starts a Google Analytics session for the current client. 

    Args: 
     client_id: A string Client ID representing a unique anonyized user. 
     user_agent: A string user agent to send with each log. 
     runtimes: A set of strings containing the runtimes used. 
    """ 
    self._start_time = Now() 
    self._client_id = client_id 
    self._user_agent = user_agent 
    self._runtimes = ','.join(sorted(list(runtimes))) if runtimes else None 
    self.Log(DEVAPPSERVER_CATEGORY, START_ACTION) 

    def Stop(self): 
    """Ends a Google Analytics session for the current client.""" 

    total_run_time = int((Now() - self._start_time).total_seconds()) ###### <<<<< ERROR HERE 

    self.LogOnceOnStop(DEVAPPSERVER_CATEGORY, STOP_ACTION, value=total_run_time) 
    self.LogBatch(self._log_once_on_stop_events.itervalues()) 

etc 

_start_timeなしに初期化され、更新されていませんでした:

答えて

2

エラーで述べたmetrics.pyスクリプト内には、このようなものが表示されます。これは、Startが呼び出される前にいくつかの例外が発生したためです。そして、ええは私たちの痕跡を食べました。 Nom nom。

このエラーをデバッグするには、トレースバックを取得することをお勧めします。私はちょうどそうに見えるように私のmetrics.pyストップ機能を編集した:

def Stop(self): 
    """Ends a Google Analytics session for the current client.""" 
    import traceback 
    sErr = traceback.format_exc() 
    if sErr: 
     print(sErr) 
     print('===========') 

    total_run_time = int((Now() - self._start_time).total_seconds()) 

    self.LogOnceOnStop(DEVAPPSERVER_CATEGORY, STOP_ACTION, value=total_run_time) 
    self.LogBatch(self._log_once_on_stop_events.itervalues()) 

は、今ではこのスレッドを見つけている他の人々のために元のエラー

+1

のトレースバックを出力:@Sheenaは、それが意味正しいです'_start_time'が始まる前にエラーがスローされ、私の場合、app.yamlは正しいフォーマット/必要な値を持っていませんでした。これにより、dev_appserver.pyが正常に起動する前に障害が発生します。あなたに 'app.yaml'を確認してください。 – Mathias

+1

@マティアス私はいくつかの異なることからこのエラーを受けました。通常、Pythonコードのエラーのため、yamlではありません。私が見ている間違いは、見た目の多くの場所の一つに過ぎない構成で起こると思います。例外を見つけ出すのに最適な場所は、通常トレースバックです。それ以外の場合は、前回の実行以降に編集した内容を確認してから掘り下げてください。たいていの場合、楽しいことはありません – Sheena

関連する問題