当前位置: 首页>>代码示例>>Python>>正文


Python deferred.defer方法代码示例

本文整理汇总了Python中google.appengine.ext.deferred.defer方法的典型用法代码示例。如果您正苦于以下问题:Python deferred.defer方法的具体用法?Python deferred.defer怎么用?Python deferred.defer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在google.appengine.ext.deferred的用法示例。


在下文中一共展示了deferred.defer方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _run_function_as_task

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def _run_function_as_task(all_functions_list, function_name, kwargs=None):
  """Runs a specific function and its kwargs as an AppEngine task.

  Args:
    all_functions_list: string list, A list with all function names that are
        registered as bootstrap functions on the Loaner app.
    function_name: string, A specific function that should be ran as a task.
    kwargs: dict, Optional kwargs to be passed to the function that will run.

  Returns:
    The deferred task from AppEngine taskqueue.

  Raises:
    Error: if requested bootstrap method is not allowed or does not exist.
  """
  logging.debug('Running %s as a task.', function_name)
  function = all_functions_list.get(function_name)
  if function is None:
    raise Error(
        'Requested bootstrap method {} does not exist.'.format(function_name))
  if not kwargs:
    kwargs = {}
  kwargs['user_email'] = user.get_user_email()
  return deferred.defer(function, **kwargs) 
开发者ID:google,项目名称:loaner,代码行数:26,代码来源:bootstrap.py

示例2: send_mail_notification

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def send_mail_notification(subject, body, to=None, **kwargs):
  if not config.CONFIG_DB.feedback_email:
    return
  brand_name = config.CONFIG_DB.brand_name
  sender = '%s <%s>' % (brand_name, config.CONFIG_DB.feedback_email)
  subject = '[%s] %s' % (brand_name, subject)
  if config.DEVELOPMENT:
    logging.info(
      '\n'
      '######### Deferring sending this email: #############################'
      '\nFrom: %s\nTo: %s\nSubject: %s\n\n%s\n'
      '#####################################################################',
      sender, to or sender, subject, body
    )
  deferred.defer(mail.send_mail, sender, to or sender, subject, body, **kwargs)


###############################################################################
# Admin Notifications
############################################################################### 
开发者ID:lipis,项目名称:github-stats,代码行数:22,代码来源:task.py

示例3: repo_cleanup

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def repo_cleanup(days, cursor=None):
  before_date = datetime.utcnow() - timedelta(days=days)
  repo_qry = model.Repo.query().filter(model.Repo.modified < before_date)
  repo_keys, repo_cursors = util.get_dbs(
      repo_qry,
      order='modified',
      keys_only=True,
      cursor=cursor,
    )

  ndb.delete_multi(repo_keys)
  if repo_cursors['next']:
    deferred.defer(repo_cleanup, days, repo_cursors['next'])


###############################################################################
# Account Clean-ups
############################################################################### 
开发者ID:lipis,项目名称:github-stats,代码行数:20,代码来源:task.py

示例4: MakeCommandHandler

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def MakeCommandHandler(cmd_cls):
  """Takes a command class and returns a route tuple which allows that command
     to be executed.
  """
  class H(webapp2.RequestHandler):
    def get(self):
      self.response.write("""
      <h1>You are about to run command "{}". Are you sure?</h1>
      <form action="" method="POST">
      <button>Punch it</button>
      </form>""".format(self._get_cmd().NAME))

    def post(self):
      deferred.defer(self._get_cmd().run)
      self.response.write('Command started.')

    def _get_cmd(self):
      if 'cmds' not in self.app.registry:
        self.app.registry['cmds'] = {}
      if cmd_cls.SHORT_NAME not in self.app.registry['cmds']:
        self.app.registry['cmds'][cmd_cls.SHORT_NAME] = cmd_cls(self.app.config)
      return self.app.registry['cmds'][cmd_cls.SHORT_NAME]

  return ('/admin/command/' + cmd_cls.SHORT_NAME, H) 
开发者ID:MayOneUS,项目名称:pledgeservice,代码行数:26,代码来源:admin.py

示例5: _perform_backup_complete

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def _perform_backup_complete(
    operation, job_id, kind, backup_info_pk, gcs_path_prefix, filenames, queue):
  backup_info = BackupInformation.get(backup_info_pk)
  if backup_info:
    if job_id in backup_info.active_jobs:
      backup_info.active_jobs.remove(job_id)
      backup_info.completed_jobs = list(
          set(backup_info.completed_jobs + [job_id]))


    filenames = [GCSUtil.add_gs_prefix_if_missing(name) for name in filenames]
    kind_backup_files = backup_info.get_kind_backup_files([kind])[0]
    if kind_backup_files:
      kind_backup_files.files = list(set(kind_backup_files.files + filenames))
    else:
      kind_backup_files = backup_info.create_kind_backup_files(kind, filenames)
    db.put((backup_info, kind_backup_files), force_writes=True)
    if operation.status == utils.DatastoreAdminOperation.STATUS_COMPLETED:
      deferred.defer(finalize_backup_info, backup_info.key(),
                     gcs_path_prefix,
                     _url=config.DEFERRED_PATH,
                     _queue=queue,
                     _transactional=True)
  else:
    logging.warn('BackupInfo was not found for %s', backup_info_pk) 
开发者ID:GoogleCloudPlatform,项目名称:python-compat-runtime,代码行数:27,代码来源:backup_handler.py

示例6: Dispatch

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def Dispatch():
  """Dispatches per-host tasks onto the event processing queue."""
  total_dispatch_count = 0
  logging.info('Starting a new dispatch task')

  # Query for all distinct host_id values among the _UnsyncedEvents, in batches,
  # either until we run out, or the task nears its deadline.
  query = _UnsyncedEvent.query(
      projection=[_UnsyncedEvent.host_id], distinct=True)
  for event_page in datastore_utils.Paginate(query, page_size=25):
    host_ids = [event.host_id for event in event_page]
    for host_id in host_ids:
      deferred.defer(Process, host_id, _queue=constants.TASK_QUEUE.BIT9_PROCESS)
      total_dispatch_count += 1

  logging.info('Dispatched %d task(s)', total_dispatch_count) 
开发者ID:google,项目名称:upvote,代码行数:18,代码来源:bit9_syncing.py

示例7: get

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def get(self):

    now = datetime.datetime.utcnow()

    # Notify all users whose Exemptions now have less than a week left, in order
    # to give reasonable advance warning (e.g. long weekends, holidays, etc).
    one_week_start_dt = now + datetime.timedelta(days=7, hours=-1)
    one_week_end_dt = now + datetime.timedelta(days=7)

    # Notify all users whose Exemptions now have less that 24 hours left. This
    # will act as a final reminder, and will also ensure that even users who
    # choose a 1-day Exemption will get an email warning (for what it's worth).
    one_day_start_dt = now + datetime.timedelta(days=1, hours=-1)
    one_day_end_dt = now + datetime.timedelta(days=1)

    tuples = [
        (one_week_start_dt, one_week_end_dt),
        (one_day_start_dt, one_day_end_dt)]

    # Defer a task for each batch of notifications.
    for start_dt, end_dt in tuples:
      deferred.defer(
          _NotifyExpirationsInRange, start_dt, end_dt,
          _queue=constants.TASK_QUEUE.EXEMPTIONS) 
开发者ID:google,项目名称:upvote,代码行数:26,代码来源:exemption_upkeep.py

示例8: cron

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def cron():
  stories = topstories()
  chunks = chunkify(stories, 20)
  for chunk in chunks:
    deferred.defer(task, chunk)
  return 'OK' 
开发者ID:phil-r,项目名称:hackernewsbot,代码行数:8,代码来源:main.py

示例9: clear

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def clear(self, request):
    """Clears a search index for the given type."""
    if request.model == search_messages.SearchIndexEnum.DEVICE:
      deferred.defer(device_model.Device.clear_index)
    elif request.model == search_messages.SearchIndexEnum.SHELF:
      deferred.defer(shelf_model.Shelf.clear_index)
    return message_types.VoidMessage() 
开发者ID:google,项目名称:loaner,代码行数:9,代码来源:search_api.py

示例10: reindex

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def reindex(self, request):
    """Reindexes a search index for the given type."""
    if request.model == search_messages.SearchIndexEnum.DEVICE:
      deferred.defer(device_model.Device.index_entities_for_search)
    elif request.model == search_messages.SearchIndexEnum.SHELF:
      deferred.defer(shelf_model.Shelf.index_entities_for_search)
    return message_types.VoidMessage() 
开发者ID:google,项目名称:loaner,代码行数:9,代码来源:search_api.py

示例11: enable_guest_mode

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def enable_guest_mode(self, user_email):
    """Moves a device into guest mode if allowed.

    Args:
      user_email: str, The email of the acting user.

    Raises:
      GuestNotAllowedError: when the allow_guest_mode config is not True.
      EnableGuestError: if there is an RPC error in the Directory API, or the
          allow_guest_mode setting is not True.
      UnassignedDeviceError: if the device is not assigned, guest mode should
          not be allowed.
    """
    if not self.is_assigned:
      raise UnassignedDeviceError(_UNASSIGNED_DEVICE % self.identifier)
    if config_model.Config.get('allow_guest_mode'):
      directory_client = directory.DirectoryApiClient(user_email)
      guest_ou = constants.ORG_UNIT_DICT['GUEST']

      try:
        directory_client.move_chrome_device_org_unit(
            device_id=self.chrome_device_id,
            org_unit_path=guest_ou)
      except directory.DirectoryRPCError as err:
        raise EnableGuestError(str(err))
      else:
        self.current_ou = guest_ou
        self.ou_changed_date = datetime.datetime.utcnow()
        self.stream_to_bq(
            user_email, 'Moving device %s into Guest Mode.' % self.identifier)
        self.put()
        if config_model.Config.get('timeout_guest_mode'):
          countdown = datetime.timedelta(
              hours=config_model.Config.get(
                  'guest_mode_timeout_in_hours')).total_seconds()
          deferred.defer(
              self._disable_guest_mode, user_email, _countdown=countdown)
    else:
      raise GuestNotAllowedError(_GUEST_MODE_DISABLED_MSG) 
开发者ID:google,项目名称:loaner,代码行数:41,代码来源:device_model.py

示例12: _pre_delete_hook

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def _pre_delete_hook(cls, key):
    """Cleans up any entities that reference the key.

    Note that this operation can have a long tail in that it requires a bulk tag
    disassociation across potentially many entities in Datastore.

    Args:
      key: ndb.Key, a Tag model key.
    """
    logging.info(
        'Destroying the tag with urlsafe key %r and name %r.',
        key.urlsafe(), key.get().name)
    for model in _MODELS_WITH_TAGS:
      deferred.defer(_delete_tags, model, key.get()) 
开发者ID:google,项目名称:loaner,代码行数:16,代码来源:tag_model.py

示例13: _delete_tags

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def _delete_tags(model, tag, cursor=None, num_updated=0, batch_size=100):
  """Cleans up any entities on the given model that reference the given key.

  Args:
    model: ndb.Model, a Model with a repeated TagData property.
    tag: Tag, an instance of a Tag model.
    cursor: Optional[datastore_query.Cursor], pointing to the last result.
    num_updated: int, the number of entities that were just updated.
    batch_size: int, the number of entities to include in the batch.
  """
  entities, next_cursor, more = model.query(
      model.tags.tag == tag).fetch_page(batch_size, start_cursor=cursor)

  for entity in entities:
    entity.tags = [
        model_tag for model_tag in entity.tags if model_tag.tag != tag
    ]
  ndb.put_multi(entities)

  num_updated += len(entities)
  logging.info(
      'Destroyed %d occurrence(s) of the tag with URL safe key %r',
      len(entities), tag.key.urlsafe())
  if more:
    deferred.defer(
        _delete_tags, model, tag,
        cursor=next_cursor, num_updated=num_updated, batch_size=batch_size)
  else:
    logging.info(
        'Destroyed a total of %d occurrence(s) of the tag with URL safe key %r',
        num_updated, tag.key.urlsafe()) 
开发者ID:google,项目名称:loaner,代码行数:33,代码来源:tag_model.py

示例14: get_test_set_from_results_str

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def get_test_set_from_results_str(category, results_str):
    """Creates a runtime version of a browserscope TestSet by parsing strings.
    Args:
      category: A string that looks like 'usertest_sad7dsa987sa9dsa7dsa9'.
      results_str: A string that looks like 'test_1=0,test_2=1'.

    Returns:
      A models.user_test.TestSet instance.

    Raises:
      KeyTooLong: When any of the key names is longer than MAX_KEY_LENGTH.
    """
    category_prefix = '%s_' % Test.get_prefix()
    if category_prefix not in category:
      return None
    key = category.replace(category_prefix, '')
    test = Test.get_mem(key)
    if not test:
      return None

    test_scores = [x.split('=') for x in str(results_str).split(',')]
    test_keys = sorted([x[0] for x in test_scores])
    ValidateTestKeys(test_keys)

    # If it's test run #1, save what we've got for test keys and swap
    # memcache.
    if not test.test_keys:
      test.test_keys = test_keys
      test.save_memcache()
    else:
      deferred.defer(update_test_keys, key, test_keys)

    # Regardless we'll defer updating the TestMeta reference.
    deferred.defer(update_test_meta, key, test_scores)

    test_set = test.get_test_set_from_test_keys(test_keys)
    return test_set 
开发者ID:elsigh,项目名称:browserscope,代码行数:39,代码来源:user_test.py

示例15: queue_account

# 需要导入模块: from google.appengine.ext import deferred [as 别名]
# 或者: from google.appengine.ext.deferred import defer [as 别名]
def queue_account(account_db):
  import logging
  if account_db.status in ['404']:
    return

  max_repos = 3000
  queue_it = False
  delta = datetime.utcnow() - account_db.synced

  if account_db.status in ['new', 'error']:
    account_db.status = 'syncing'
    account_db.synced = datetime.utcnow()
    account_db.put()
    queue_it = True

  elif delta.days > 0 and account_db.status == 'failed' and account_db.public_repos < max_repos:
    account_db.status = 'syncing'
    account_db.synced = datetime.utcnow()
    account_db.put()
    queue_it = True

  elif account_db.status == 'syncing':
    if delta.seconds > 60 * 60 or account_db.public_repos > max_repos:
      account_db.status = 'failed'
      account_db.synced = datetime.utcnow()
      account_db.put()
    elif delta.seconds > 30 * 60:
      queue_it = True

  # older than 4 hours long sunc them
  if (delta.days > 0 or delta.seconds > 60 * 60 * 4) and account_db.status != 'failed':
    account_db.status = 'syncing'
    account_db.synced = datetime.utcnow()
    account_db.put()
    queue_it = True

  if queue_it:
    deferred.defer(sync_account, account_db) 
开发者ID:lipis,项目名称:github-stats,代码行数:40,代码来源:task.py


注:本文中的google.appengine.ext.deferred.defer方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。