def upload(self, key, filename, is_public=False, metadata=None): k = Key(self.bucket) k.key = key headers = {'Cache-Control': 'max-age=31536000'} content_type, encoding = mimetypes.guess_type(filename) if content_type is not None: headers['Content-Type'] = content_type if encoding == 'gzip': headers['Content-Encoding'] = 'gzip' if metadata is not None: for key in metadata: headers['x-amz-meta-' + key] = metadata[key] for _ in xrange(5): try: k.set_contents_from_filename( filename, headers=headers, policy=('public-read' if is_public else 'private') ) logger.info('Upload %s -> %s', filename, k.name) break except Exception as e: logger.exception(e) logger.warn('Try upload again') else: logger.error('Retry more than 5 times, give it up.') raise ExceedMaxRetryError()
def respond(self, api_record): ctrl_action = api_record.get('rails', {}).get('controller#action', '') for attempt in xrange(5): try: self.slack.chat.post_message( setting.get('slack', 'channel'), 'Server error [%(ctrl_action)s]' % locals(), username='******', attachments=self._make_attachments(api_record), icon_url=setting.get('slack', 'icon')) break except Exception as e: logger.exception(e) logger.error('Slack API failed, try again')
def respond(self, api_record): ctrl_action = api_record.get('rails', {}).get('controller#action', '') for attempt in xrange(5): try: self.slack.chat.post_message( setting.get('slack', 'channel'), 'Server error [%(ctrl_action)s]' % locals(), username='******', attachments=self._make_attachments(api_record), icon_url=setting.get('slack', 'icon') ) break except Exception as e: logger.exception(e) logger.error('Slack API failed, try again')
def post(self): try: self.slack.chat.post_message(self.get_channel(), self.get_text(), username=self.get_username(), as_user=self.get_as_user(), parse=self.get_parse(), link_names=self.get_link_names(), attachments=self.get_attachments(), unfurl_links=self.get_unfurl_links(), unfurl_media=self.get_unfurl_media(), icon_url=self.get_icon_url(), icon_emoji=self.get_icon_emoji()) except Exception as e: logger.exception(e) logger.error('Slack API failed, try again')
def post(self): for _ in xrange(5): try: self.slack.chat.post_message( self.get_channel(), self.get_text(), username=self.get_username(), as_user=self.get_as_user(), parse=self.get_parse(), link_names=self.get_link_names(), attachments=self.get_attachments(), unfurl_links=self.get_unfurl_links(), unfurl_media=self.get_unfurl_media(), icon_url=self.get_icon_url(), icon_emoji=self.get_icon_emoji() ) break except Exception as e: logger.exception(e) logger.error('Slack API failed, try again')
def watch_sqs(): queue = get_queue() if queue is None: msg = 'Cannot find queue' logger.error(msg) raise ValueError(msg) message = queue.read(wait_time_seconds=20) if message is None: logger.info('No message available now') return logger.info(message.get_body()) s3_event = S3Event(message.get_body()) try: ElbLogEventHandler(s3_event).handle() finally: queue.delete_message(message) logger.info('Delete SQS message')