2014-02-14 4 views
1

Я хочу использовать ereporter для отправки мне ежедневного электронного письма со всеми исключениями из моего приложения. Для этого я использую следующий код:GAE Python - Ereporter не отправляет электронное письмо

import webapp2, logging 
from google.appengine.ext import ereporter 

class SomeJob(webapp2.RequestHandler): 
    def get(self): 
    try: 
     #some job 
    except: 
     logging.exception('my text') 
     ereporter.register_logger() 

Мой app.yaml имеет следующие ссылки (python2.7):

- url: /_ereporter.* 
    script: google.appengine.ext.ereporter.report_generator.application 
    login: admin 

И мой cron.yaml имеет следующие:

- description: Daily exception report 
    url: /[email protected]&delete=false&[email protected] 
    schedule: every day 04:30 

Работа cron работает без ошибок, он просто не отправляет электронное письмо. То, что я заметил, что когда я смотрю в App Dashboard и выберите Журнал, исключение вошли имеет следующий текст:

мой текст
None

Я не уверен, что вызывает добавление «Нет», но я подозреваю, что он может указать, почему я не получаю ежедневный отчет. Есть идеи?

+0

, возможно, добавить ', за исключением исключений при е:', а затем Repr ошибку, чтобы быть более конкретным? –

+0

Ну да, у меня есть некоторые задания, где я регистрирую весь результат Traceback. Однако я использовал простую строку здесь, чтобы показать, что даже это не работает. – Vincent

ответ

2

Я думаю, проблема в том, что вы регистрируете регистратор после регистрации ваших данных.

В ereporter article он рекомендует регистрирующий регистратор на глобальном уровне:

import logging 
from google.appengine.ext import ereporter 

ereporter.register_logger() 
+0

Спасибо за ваш вклад Сэмюэл. Это решило проблему «Нет». Однако письмо по-прежнему не отправляется. – Vincent

+0

Оказывается, что только ведение журнала исключения не вызывает ereporter. Когда последнее исключение произошло недавно, я получил электронное письмо. – Vincent

1

Как отметил Самуэль, вы должны зарегистрировать регистратор до исключения. Лучшее место в вашем эквиваленте main.py. Однако, как только вы это сделаете, вы увидите результаты своих вызовов для logging.exception(). ereporter отправит вам все необработанные исключения и все исключения, в которых вы вызываете logging.exception() в условии except:.

Одно предостережение с ereporter заключается в том, что оно по умолчанию отправляет только вчерашние исключения. Для того, чтобы получить его, чтобы отправить вам сегодня исключения называют его вручную и обеспечивают текущую дату, например,

http://your-app.appspot.com/[email protected]&date=2014-05-28 

Вы также можете написать свой собственный обработчик хрон, чтобы обернуть _ereporter и обеспечить текущую дату программно, что-то вроде этого:

self.redirect("/_ereporter ... &date=%s" % datetime.datetime.now().strftime("%Y-%m-%d")) 

Я планирую сделать это, чтобы получить ежечасный отчет об исключениях.

Н/Т: https://groups.google.com/forum/#!searchin/google-appengine/ereporter/google-appengine/G99VGhs5cls/bD1UXDEnQqcJ

Смежные вопросы