本文整理汇总了Python中raven.contrib.django.models.client.tags_context函数的典型用法代码示例。如果您正苦于以下问题:Python tags_context函数的具体用法?Python tags_context怎么用?Python tags_context使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了tags_context函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: record_affected_user
def record_affected_user(event, **kwargs):
from sentry.models import EventUser, Group
Raven.tags_context({
'project': event.project_id,
})
user_data = event.data.get('sentry.interfaces.User', event.data.get('user'))
if not user_data:
logger.info('No user data found for event_id=%s', event.event_id)
return
euser = EventUser(
project=event.project,
ident=user_data.get('id'),
email=user_data.get('email'),
username=user_data.get('username'),
ip_address=user_data.get('ip_address'),
)
if not euser.tag_value:
# no ident, bail
logger.info('No identifying value found for user on event_id=%s',
event.event_id)
return
try:
with transaction.atomic(using=router.db_for_write(EventUser)):
euser.save()
except IntegrityError:
pass
Group.objects.add_tags(event.group, [
('sentry:user', euser.tag_value)
])
开发者ID:duanshuaimin,项目名称:sentry,代码行数:35,代码来源:post_process.py
示例2: index_event_tags
def index_event_tags(organization_id, project_id, event_id, tags,
group_id, environment_id, date_added=None, **kwargs):
from sentry import tagstore
Raven.tags_context({
'project': project_id,
})
create_event_tags_kwargs = {}
if date_added is not None:
create_event_tags_kwargs['date_added'] = date_added
metrics.timing(
'tagstore.tags_per_event',
len(tags),
tags={
'organization_id': organization_id,
}
)
tagstore.create_event_tags(
project_id=project_id,
group_id=group_id,
environment_id=environment_id,
event_id=event_id,
tags=tags,
**create_event_tags_kwargs
)
开发者ID:binlee1990,项目名称:sentry,代码行数:28,代码来源:post_process.py
示例3: index_event_tags
def index_event_tags(organization_id, project_id, event_id, tags, group_id=None,
**kwargs):
from sentry.models import EventTag, Project, TagKey, TagValue
Raven.tags_context({
'project': project_id,
})
for key, value in tags:
tagkey, _ = TagKey.objects.get_or_create(
project=Project(id=project_id),
key=key,
)
tagvalue, _ = TagValue.objects.get_or_create(
project=Project(id=project_id, organization_id=organization_id),
key=key,
value=value,
)
try:
# handle replaying of this task
with transaction.atomic():
EventTag.objects.create(
project_id=project_id,
group_id=group_id,
event_id=event_id,
key_id=tagkey.id,
value_id=tagvalue.id,
)
except IntegrityError:
pass
开发者ID:duanshuaimin,项目名称:sentry,代码行数:32,代码来源:post_process.py
示例4: preprocess_event
def preprocess_event(cache_key=None, data=None, start_time=None, **kwargs):
from sentry.plugins import plugins
if cache_key:
data = default_cache.get(cache_key)
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'pre'})
error_logger.error('preprocess.failed.empty', extra={'cache_key': cache_key})
return
project = data['project']
Raven.tags_context({
'project': project,
})
# Iterate over all plugins looking for processors based on the input data
# plugins should yield a processor function only if it actually can operate
# on the input data, otherwise it should yield nothing
for plugin in plugins.all(version=2):
processors = safe_execute(plugin.get_event_preprocessors, data=data, _with_transaction=False)
for processor in (processors or ()):
# On the first processor found, we just defer to the process_event
# queue to handle the actual work.
process_event.delay(cache_key=cache_key, start_time=start_time)
return
# If we get here, that means the event had no preprocessing needed to be done
# so we can jump directly to save_event
if cache_key:
data = None
save_event.delay(cache_key=cache_key, data=data, start_time=start_time)
开发者ID:mvaled,项目名称:sentry,代码行数:32,代码来源:store.py
示例5: preprocess_event
def preprocess_event(cache_key=None, data=None, start_time=None, **kwargs):
from sentry.plugins import plugins
if cache_key:
data = default_cache.get(cache_key)
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'pre'})
logger.error('Data not available in preprocess_event (cache_key=%s)', cache_key)
return
project = data['project']
Raven.tags_context({
'project': project,
})
# TODO(dcramer): ideally we would know if data changed by default
has_changed = False
for plugin in plugins.all(version=2):
processors = safe_execute(plugin.get_event_preprocessors, _with_transaction=False)
for processor in (processors or ()):
result = safe_execute(processor, data)
if result:
data = result
has_changed = True
assert data['project'] == project, 'Project cannot be mutated by preprocessor'
if has_changed and cache_key:
default_cache.set(cache_key, data, 3600)
if cache_key:
data = None
save_event.delay(cache_key=cache_key, data=data, start_time=start_time)
开发者ID:Akashguharoy,项目名称:sentry,代码行数:34,代码来源:store.py
示例6: save_event
def save_event(cache_key=None, data=None, start_time=None, event_id=None, **kwargs):
"""
Saves an event to the database.
"""
from sentry.event_manager import EventManager
if cache_key:
data = default_cache.get(cache_key)
if event_id is None and data is not None:
event_id = data['event_id']
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'post'})
return
project = data.pop('project')
delete_raw_event(project, event_id)
Raven.tags_context({
'project': project,
})
try:
manager = EventManager(data)
manager.save(project)
finally:
if cache_key:
default_cache.delete(cache_key)
if start_time:
metrics.timing('events.time-to-process', time() - start_time,
instance=data['platform'])
开发者ID:rlugojr,项目名称:sentry,代码行数:33,代码来源:store.py
示例7: _dispatch
def _dispatch(self, request, helper, project_id=None, origin=None, *args, **kwargs):
# A CSP report is sent as a POST request with no Origin or Referer
# header. What we're left with is a 'document-uri' key which is
# inside of the JSON body of the request. This 'document-uri' value
# should be treated as an origin check since it refers to the page
# that triggered the report. The Content-Type is supposed to be
# `application/csp-report`, but FireFox sends it as `application/json`.
if request.method != 'POST':
return HttpResponseNotAllowed(['POST'])
if request.META.get('CONTENT_TYPE') not in self.content_types:
raise APIError('Invalid Content-Type')
request.user = AnonymousUser()
project = self._get_project_from_id(project_id)
helper.context.bind_project(project)
Raven.tags_context(helper.context.get_tags_context())
# This is yanking the auth from the querystring since it's not
# in the POST body. This means we expect a `sentry_key` and
# `sentry_version` to be set in querystring
auth = helper.auth_from_request(request)
key = helper.project_key_from_auth(auth)
if key.project_id != project.id:
raise APIError('Two different projects were specified')
helper.context.bind_auth(auth)
Raven.tags_context(helper.context.get_tags_context())
return super(APIView, self).dispatch(
request=request, project=project, auth=auth, helper=helper, key=key, **kwargs
)
开发者ID:mjumbewu,项目名称:sentry,代码行数:34,代码来源:api.py
示例8: _do_preprocess_event
def _do_preprocess_event(cache_key, data, start_time, event_id,
process_event):
if cache_key:
data = default_cache.get(cache_key)
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'pre'})
error_logger.error('preprocess.failed.empty',
extra={'cache_key': cache_key})
return
project = data['project']
Raven.tags_context({
'project': project,
})
if should_process(data):
process_event.delay(cache_key=cache_key, start_time=start_time,
event_id=event_id)
return
# If we get here, that means the event had no preprocessing needed to be done
# so we can jump directly to save_event
if cache_key:
data = None
save_event.delay(cache_key=cache_key, data=data, start_time=start_time,
event_id=event_id)
开发者ID:rlugojr,项目名称:sentry,代码行数:27,代码来源:store.py
示例9: post_process_group
def post_process_group(event, is_new, is_regression, is_sample, **kwargs):
"""
Fires post processing hooks for a group.
"""
from sentry.models import Project
from sentry.rules.processor import RuleProcessor
project_id = event.group.project_id
Raven.tags_context({
'project': project_id,
})
project = Project.objects.get_from_cache(id=project_id)
_capture_stats(event, is_new)
rp = RuleProcessor(event, is_new, is_regression, is_sample)
# TODO(dcramer): ideally this would fanout, but serializing giant
# objects back and forth isn't super efficient
for callback, futures in rp.apply():
safe_execute(callback, event, futures)
for plugin in plugins.for_project(project):
plugin_post_process_group(
plugin_slug=plugin.slug,
event=event,
is_new=is_new,
is_regresion=is_regression,
is_sample=is_sample,
)
开发者ID:haojiang1,项目名称:sentry,代码行数:30,代码来源:post_process.py
示例10: _dispatch
def _dispatch(self, request, helper, project_id=None, origin=None, *args, **kwargs):
request.user = AnonymousUser()
project = self._get_project_from_id(project_id)
if project:
helper.context.bind_project(project)
Raven.tags_context(helper.context.get_tags_context())
if origin is not None:
# This check is specific for clients who need CORS support
if not project:
raise APIError("Client must be upgraded for CORS support")
if not is_valid_origin(origin, project):
raise APIForbidden("Invalid origin: %s" % (origin,))
# XXX: It seems that the OPTIONS call does not always include custom headers
if request.method == "OPTIONS":
response = self.options(request, project)
else:
auth = self._parse_header(request, helper, project)
project_ = helper.project_from_auth(auth)
# Legacy API was /api/store/ and the project ID was only available elsewhere
if not project:
if not project_:
raise APIError("Unable to identify project")
project = project_
helper.context.bind_project(project)
elif project_ != project:
raise APIError("Two different project were specified")
helper.context.bind_auth(auth)
Raven.tags_context(helper.context.get_tags_context())
if auth.version != "2.0":
if not auth.secret_key:
# If we're missing a secret_key, check if we are allowed
# to do a CORS request.
# If we're missing an Origin/Referrer header entirely,
# we only want to support this on GET requests. By allowing
# un-authenticated CORS checks for POST, we basially
# are obsoleting our need for a secret key entirely.
if origin is None and request.method != "GET":
raise APIForbidden("Missing required attribute in authentication header: sentry_secret")
if not is_valid_origin(origin, project):
raise APIForbidden("Missing required Origin or Referer header")
response = super(APIView, self).dispatch(
request=request, project=project, auth=auth, helper=helper, **kwargs
)
if origin:
response["Access-Control-Allow-Origin"] = origin
return response
开发者ID:journeyqiao,项目名称:sentry,代码行数:58,代码来源:api.py
示例11: plugin_post_process_group
def plugin_post_process_group(plugin_slug, event, **kwargs):
"""
Fires post processing hooks for a group.
"""
Raven.tags_context({
'project': event.project_id,
})
plugin = plugins.get(plugin_slug)
safe_execute(plugin.post_process, event=event, group=event.group, **kwargs)
开发者ID:binlee1990,项目名称:sentry,代码行数:9,代码来源:post_process.py
示例12: _wrapped
def _wrapped(*args, **kwargs):
key = 'jobs.duration'
if stat_suffix:
instance = '{}.{}'.format(name, stat_suffix(*args, **kwargs))
else:
instance = name
Raven.tags_context({'task_name': name})
with metrics.timer(key, instance=instance):
try:
result = func(*args, **kwargs)
finally:
Raven.context.clear()
return result
开发者ID:haojiang1,项目名称:sentry,代码行数:13,代码来源:base.py
示例13: post_process_group
def post_process_group(event, is_new, is_regression, is_sample, **kwargs):
"""
Fires post processing hooks for a group.
"""
# NOTE: we must pass through the full Event object, and not an
# event_id since the Event object may not actually have been stored
# in the database due to sampling.
from sentry.models import Project
from sentry.models.group import get_group_with_redirect
from sentry.rules.processor import RuleProcessor
# Re-bind Group since we're pickling the whole Event object
# which may contain a stale Group.
event.group, _ = get_group_with_redirect(event.group_id)
event.group_id = event.group.id
project_id = event.group.project_id
Raven.tags_context({
'project': project_id,
})
# Re-bind Project since we're pickling the whole Event object
# which may contain a stale Project.
event.project = Project.objects.get_from_cache(id=project_id)
_capture_stats(event, is_new)
# we process snoozes before rules as it might create a regression
process_snoozes(event.group)
rp = RuleProcessor(event, is_new, is_regression, is_sample)
# TODO(dcramer): ideally this would fanout, but serializing giant
# objects back and forth isn't super efficient
for callback, futures in rp.apply():
safe_execute(callback, event, futures)
for plugin in plugins.for_project(event.project):
plugin_post_process_group(
plugin_slug=plugin.slug,
event=event,
is_new=is_new,
is_regresion=is_regression,
is_sample=is_sample,
)
event_processed.send_robust(
sender=post_process_group,
project=event.project,
group=event.group,
event=event,
)
开发者ID:alshopov,项目名称:sentry,代码行数:51,代码来源:post_process.py
示例14: _do_process_event
def _do_process_event(cache_key, start_time, event_id):
from sentry.plugins import plugins
data = default_cache.get(cache_key)
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'process'})
error_logger.error('process.failed.empty',
extra={'cache_key': cache_key})
return
project = data['project']
Raven.tags_context({
'project': project,
})
has_changed = False
# Stacktrace based event processors. These run before anything else.
new_data = process_stacktraces(data)
if new_data is not None:
has_changed = True
data = new_data
# TODO(dcramer): ideally we would know if data changed by default
# Default event processors.
for plugin in plugins.all(version=2):
processors = safe_execute(plugin.get_event_preprocessors,
data=data, _with_transaction=False)
for processor in (processors or ()):
result = safe_execute(processor, data)
if result:
data = result
has_changed = True
assert data['project'] == project, 'Project cannot be mutated by preprocessor'
if has_changed:
issues = data.get('processing_issues')
if issues:
create_failed_event(cache_key, project, list(issues.values()),
event_id=event_id)
return
default_cache.set(cache_key, data, 3600)
save_event.delay(cache_key=cache_key, data=None, start_time=start_time,
event_id=event_id)
开发者ID:rlugojr,项目名称:sentry,代码行数:47,代码来源:store.py
示例15: _wrapped
def _wrapped(*args, **kwargs):
# TODO(dcramer): we want to tag a transaction ID, but overriding
# the base on app.task seems to cause problems w/ Celery internals
transaction_id = kwargs.pop("__transaction_id", None)
key = "jobs.duration"
if stat_suffix:
instance = "{}.{}".format(name, stat_suffix(*args, **kwargs))
else:
instance = name
Raven.tags_context({"task_name": name, "transaction_id": transaction_id})
with metrics.timer(key, instance=instance), track_memory_usage("jobs.memory_change", instance=instance):
try:
result = func(*args, **kwargs)
finally:
Raven.context.clear()
return result
开发者ID:fysoft2006,项目名称:sentry,代码行数:17,代码来源:base.py
示例16: save_event
def save_event(cache_key=None, data=None, start_time=None, event_id=None, **kwargs):
"""
Saves an event to the database.
"""
from sentry.event_manager import HashDiscarded, EventManager
from sentry import tsdb
if cache_key:
data = default_cache.get(cache_key)
if event_id is None and data is not None:
event_id = data['event_id']
if data is None:
metrics.incr('events.failed', tags={'reason': 'cache', 'stage': 'post'})
return
project = data.pop('project')
delete_raw_event(project, event_id, allow_hint_clear=True)
Raven.tags_context({
'project': project,
})
try:
manager = EventManager(data)
manager.save(project)
except HashDiscarded as exc:
# TODO(jess): remove this before it goes out to a wider audience
info_logger.info(
'discarded.hash', extra={
'project_id': project,
'description': exc.message,
}
)
tsdb.incr(tsdb.models.project_total_received_discarded, project, timestamp=start_time)
finally:
if cache_key:
default_cache.delete(cache_key)
if start_time:
metrics.timing(
'events.time-to-process',
time() - start_time,
instance=data['platform'])
开发者ID:alshopov,项目名称:sentry,代码行数:45,代码来源:store.py
示例17: _wrapped
def _wrapped(*args, **kwargs):
key = 'jobs.duration'
if stat_suffix:
instance = '{}.{}'.format(name, stat_suffix(*args, **kwargs))
else:
instance = name
Raven.tags_context({'task_name': name})
with metrics.timer(key, instance=instance), \
track_memory_usage('jobs.memory_change', instance=instance):
try:
return func(*args, **kwargs)
except SoftTimeLimitExceeded as error:
Raven.context.merge({
'fingerprint': [type(error).__name__, instance],
})
raise
finally:
Raven.context.clear()
开发者ID:zsh2938,项目名称:sentry,代码行数:18,代码来源:base.py
示例18: index_event_tags
def index_event_tags(organization_id, project_id, event_id, tags, group_id=None, **kwargs):
from sentry import tagstore
Raven.tags_context({
'project': project_id,
})
for key, value in tags:
tagkey, _ = tagstore.get_or_create_tag_key(project_id, key)
tagvalue, _ = tagstore.get_or_create_tag_value(project_id, key, value)
tagstore.create_event_tag(
project_id=project_id,
group_id=group_id,
event_id=event_id,
key_id=tagkey.id,
value_id=tagvalue.id,
)
开发者ID:alshopov,项目名称:sentry,代码行数:18,代码来源:post_process.py
示例19: _parse_header
def _parse_header(self, request, project):
try:
auth_vars = extract_auth_vars(request)
except (IndexError, ValueError):
raise APIError("Invalid auth header")
if not auth_vars:
raise APIError("Client/server version mismatch: Unsupported client")
server_version = auth_vars.get("sentry_version", "1.0")
client = auth_vars.get("sentry_client", request.META.get("HTTP_USER_AGENT"))
Raven.tags_context({"client": client})
Raven.tags_context({"protocol": server_version})
if server_version not in PROTOCOL_VERSIONS:
raise APIError("Client/server version mismatch: Unsupported protocol version (%s)" % server_version)
if not client:
raise APIError("Client request error: Missing client version identifier")
return auth_vars
开发者ID:jonaskje,项目名称:sentry,代码行数:22,代码来源:api.py
示例20: _wrapped
def _wrapped(*args, **kwargs):
# TODO(dcramer): we want to tag a transaction ID, but overriding
# the base on app.task seems to cause problems w/ Celery internals
transaction_id = kwargs.pop('__transaction_id', None)
key = 'jobs.duration'
if stat_suffix:
instance = '{}.{}'.format(name, stat_suffix(*args, **kwargs))
else:
instance = name
Raven.tags_context({
'task_name': name,
'transaction_id': transaction_id,
})
with metrics.timer(key, instance=instance), \
track_memory_usage('jobs.memory_change', instance=instance), \
SqlQueryCountMonitor(name):
try:
result = func(*args, **kwargs)
finally:
Raven.context.clear()
return result
开发者ID:Andy-hpliu,项目名称:sentry,代码行数:22,代码来源:base.py
注:本文中的raven.contrib.django.models.client.tags_context函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论