Esempio n. 1
0
        /// <summary>
        ///     判断当前代理的健康性
        /// </summary>
        /// <param name="cProxyNode">当前代理节点</param>
        /// <returns></returns>
        /// <remarks>
        ///     判断代理是否可用下载'新浪网公司'简介页面,并判断是否有'新浪网'字样
        /// </remarks>
        public static bool CheckWebProxy(ProxyIPNode cProxyNode)
        {
            if (cProxyNode == null)
            {
                return(false);
            }

            if (!cProxyNode.CheckExpired)
            {
                return(cProxyNode.CanUse);
            }

            lock (cProxyNode)
            {
                if (!cProxyNode.CheckExpired)
                {
                    return(cProxyNode.CanUse);
                }

                try
                {
                    var cProxy = new WebProxy(cProxyNode.IP, cProxyNode.Port);
                    //INFO 判断当前代理健康, 去下载新浪网站一个页面
                    var checkHtml = RequestHelper.DownLoadHtml("http://corp.sina.com.cn/chn/sina_index.html", null, null,
                                                               500, cProxy);
                    cProxyNode.LastCheckDate = DateTime.Now;
                    if (!string.IsNullOrEmpty(checkHtml) &&
                        checkHtml.IndexOf("新浪") > -1)
                    {
                        return(true);
                    }
                    return(false);
                }
                catch (Exception ex)
                {
                    Log.ErrorFormat("CheckWebProxy-ProxyIPNode:{0}-ex:{1}", cProxyNode, ex);
                    ex = null;
                    return(false);
                }
            }
            //return cProxyNode.CanUse;
        }
Esempio n. 2
0
        /// <summary>
        /// </summary>
        private void ProcessQueue()
        {
            foreach (var dataItem in _itemQueue.GetConsumingEnumerable())
            {
                try
                {
                    Process(dataItem);

                    Thread.Sleep(0);
                }
                catch (Exception ex)
                {
                    Log.ErrorFormat("ConcurrentConsumerQueue-DataItem:{0}-ex:{1}",
                                    dataItem, ex);
                    ex = null;

                    Thread.Sleep(5);
                }
            }
        }