这是我15年编程生涯中遇到的最棘手的问题之一。你知道吗
安装程序是一个部署的Django应用程序。我们有一个允许用户邀请其他用户的功能。你知道吗
我循环浏览电子邮件地址列表。在循环的每一次迭代中,我都会做一些事情,以便在我们的系统中为用户提供服务,向他们发送欢迎电子邮件,并在第三方系统中记录此事件。你知道吗
循环体如下所示:
try:
# ... some other code ...
send_new_user_welcome_email(
user,
self.inviter,
temp_password,
welcome_message=welcome_message,
is_reviewer=True
)
analytics_record_event(
self.inviter,
EVENT_INVITED_USER,
invite_type='reviewer',
invited_email=email
)
record_customer_io_invited_someone(
self.inviter,
email
)
except:
logger.exception('While inviting user "%s"' % email)
我看到的问题是,analytics_record_event
函数有时(大约每50次左右有人邀请一个或多个用户一次)似乎不会执行。它没有引起任何例外。只需跳过它,然后执行下一行。你知道吗
为了诊断问题,我在analytics_record_event
函数中添加了日志记录,以便在每次调用文件时都记录到该文件:
def analytics_record_event(user,
event_name,
skip_mixpanel=False,
skip_preact=False,
**properties):
username = user.username if hasattr(user, 'username') else user
logger.info(
u'analytics_record_event called for user %s and event "%s"' % (username, event_name)
)
我想知道这是怎么回事。我已经花了很多时间研究这个问题,我的发现如下:
send_new_user_welcome_email
被调用。我们的SMTP服务器日志确认电子邮件已发出。一个内部电子邮件日志也与此协作。你知道吗record_customer_io_invited_someone
被调用。外部系统中存在该用户的事件数据。你知道吗u'analytics_record_event...
log语句的条目。在其他时间,当这个函数正常执行时(大多数时间),日志条目就在那里。你知道吗except
语句不存在异常日志。你知道吗看起来偶尔,对analytics_record_event
的调用根本就没有发出。这使我非常悲痛。如果有人能就此提出调查途径,我将不胜感激。你知道吗
结果发现,答案令人惊讶,而且极其平凡。你知道吗
我跟踪的代码是我正在处理的系统中标准用户创建过程的一部分。但是,有一个基于CSV文件的批量创建过程,它可以做类似的工作。
analytics_record_event
在该进程中没有被调用。你知道吗未来的教训: -我以为我很聪明,在
analytics_record_event
上放了一个函数装饰器,覆盖了很多地方。这样的结果让我更加不解,于是绝望地求救:)。如果我在这个特定函数中调用analytics_record_event
之前和之后添加了一个log语句,我会更早地意识到它根本没有被调用!工作时接吻。你知道吗相关问题 更多 >
编程相关推荐