Drupal 7:Feed导入模块设置自定义elysia cron jobs'下载失败,代码为-1002。'

时间:2015-04-21 09:47:55

标签: drupal import drupal-7 cron feed

一个多星期以来,我一直在努力为Feed Feed模块中定义的不同Feed创建自定义Elysia cron作业。

我想每天从Feed AAA导入数据,每周从Feed BBB导入一次数据。因此需要在不同的时间表上执行两个(或更多,如果需要)单独的任务。我研究和组合了Elysia cron和Feed Import模块似乎就是答案。

我在Feed Feed模块中创建了两个不同的Feed。当我从Feed Import手动执行它们时,一切正常。当我从Cron运行feed_import_base_cron任务时,它也可以工作,但同时执行两个提要。

当我想为每个Feed定义特定的执行时间时,问题就开始了。我在这里找到了一个建议:https://drupal.stackexchange.com/questions/30819/give-an-individual-cron-task-for-each-feeds-import但是不能让它工作并且不知道我做错了什么,因为php和drupal模块开发不是我的优势。

我在Feed Feed模块(feed_import_base.module)中添加了以上网址的代码。我不是百分之百确定这是否是正确的地方,但它似乎有效,因为我在代码中定义的提要出现在管理UI中的Cron任务中。但是当我尝试执行它们时,会导致错误,这可以在最近的日志消息中看到:

    Exception: exception 'Exception' with message 'Download of failed with code -1002.' in

    pathToMySite../drupal/sites/all/modules/feeds/plugins/FeedsHTTPFetcher.inc:33 Stack trace: #0     
    pathToMySite../drupal/sites/all/modules/feeds/plugins/FeedsSyndicationParser.inc(20): FeedsHTTPFetcherResult->getRaw() #1 
    pathToMySite../drupal/sites/all/modules/feeds/includes/FeedsSource.inc(354): FeedsSyndicationParser->parse(Object(FeedsSource), Object(FeedsHTTPFetcherResult)) #2
    pathToMySite../drupal/sites/all/modules/feed_import/feed_import_base/feed_import_base.module(622): FeedsSource->import() #3
    [internal function]: feed_import_base_fetch_test_api_feed_raw_cron(Array) #4 
    pathToMySite../drupal/sites/all/modules/elysia_cron/elysia_cron.module(1090): call_user_func_array('feed_import_bas...', Array) #5
    pathToMySite../drupal/sites/all/modules/elysia_cron/elysia_cron.admin.inc(730): elysia_cron_execute('fetch_test_api_...') #6
    [internal function]: elysia_cron_execute_page('fetch_test_api_...') #7
    pathToMySite../drupal/includes/menu.inc(519): call_user_func_array('elysia_cron_exe...', Array) #8
    pathToMySite../drupal/index.php(21): menu_execute_active_handler() #9 {main}

我使用的实际代码是:

function feed_import_base_cronapi($op, $job = NULL) {
  $items['fetch_test_api_feed_raw_cron'] = array(
    'description' => 'Fetch test API feed RAW',
    'rule' => '*/10 * * * *', // Every 10 minutes
    'callback' => 'feed_import_base_fetch_test_api_feed_raw_cron' ,
    'arguments' => array(array('test_api_feed_raw'))
  );
  return $items;
}

function feed_import_base_fetch_test_api_feed_raw_cron($feednames){
  if (function_exists('feeds_source')){
    foreach($feednames as $feedname){
      $source = feeds_source($feedname);
      $source->import();
    }
  }
}

我真的不知道自己错过了什么或做错了什么,并开始用尽所需的选项。

2 个答案:

答案 0 :(得分:0)

我建议您应该从报告状态页面开始调试。首先导航到' / admin / reports / status'检查cron是否运行以及cron运行时间的页面。然后你应该在Drupal看门狗日志中查看与feed相关的cron运行期间的任何错误。 希望这可以帮助您调试问题。

答案 1 :(得分:0)

在同事的帮助下找到解决方案。如果某人有一天需要它,可以在这里发布。

我在这里错过了一个触发实际Feed导入的回调函数。我认为上面提到的功能是针对Feeds模块而不是Feed Import开发的。因此也没有在这里工作..

触发Feed导入的实际功能来自feed_import_base.module

_feed_import_base_process_feed($feed);