diff --git a/feeds.module b/feeds.module
index 8785f22..35d9dc1 100644
--- a/feeds.module
+++ b/feeds.module
@@ -398,6 +398,16 @@ function feeds_exit() {
   if (drupal_static('feeds_log_error', FALSE)) {
     watchdog('feeds', 'Feeds reported errors, visit the Feeds log for details.', array(), WATCHDOG_ERROR, 'admin/reports/dblog/feeds');
   }
+
+  // Process any pending PuSH subscriptions.
+  if ($subscriptions = &drupal_static('feeds_pubsubhubbub_subscribe_jobs', array())) {
+    foreach ($subscriptions as $sub) {
+      $sub['fetcher']->subscribe($sub['source']);
+    }
+
+    // Empty out the processed array.
+    $subscriptions = array();
+  }
 }
 
 /**
diff --git a/plugins/FeedsHTTPFetcher.inc b/plugins/FeedsHTTPFetcher.inc
index 27dd013..cf64d1d 100644
--- a/plugins/FeedsHTTPFetcher.inc
+++ b/plugins/FeedsHTTPFetcher.inc
@@ -164,7 +164,11 @@ class FeedsHTTPFetcher extends FeedsFetcher {
    */
   public function sourceSave(FeedsSource $source) {
     if ($this->config['use_pubsubhubbub']) {
-      $this->subscribe($source);
+      $subscribe_jobs = &drupal_static('feeds_pubsubhubbub_subscribe_jobs');
+      if(!isset($subscribe_jobs)) {
+        $subscribe_jobs = array();
+      }
+      $subscribe_jobs[] = array('fetcher' => $this, 'source' => $source);
     }
   }
 
