Skip to content

Conversation

@nodermann2
Copy link
Contributor

slave sleep fixed, reason: elapsed time after 5 seconds is reset to zero and the spider continues to work

slave sleep fixed, reason: elapsed time after 5 seconds is reset to zero and the spider continues to work
@lorien
Copy link
Owner

lorien commented Feb 18, 2015

Привет, я не понял, что делает этот патч.

@egorsmkv
Copy link
Contributor

@lorien так посмотри в код, твоя же библиотека.

def load_new_task(self):
        start = time.time()
        while True:
            try:
                with self.save_timer('task_queue'):
                    return self.taskq.get()
            except queue.Empty:
                qsize = self.taskq.size()
                if qsize:
                    logger_verbose.debug('No ready-to-go tasks, Waiting for scheduled tasks (%d)' % qsize)
                    return True
                if not self.slave:
                    logger_verbose.debug('Task queue is empty.')
                    return None
                else:
                    # Temporarily hack which force slave crawler
                    # to wait 5 seconds for new tasks, this solves
                    # the problem that sometimes slave crawler stop
                    # its work because it could not receive new
                    # tasks immediately
                    if not self.transport.active_task_number():
                        if time.time() - start < 5:
                            time.sleep(0.1)
                            logger.debug('Slave sleeping')
                        else:
                            self.slave = False
                            break
                    else:
                        break

@lorien
Copy link
Owner

lorien commented Feb 21, 2015

Уважаемые собеседники, мне нечего добавить к моим словам. Я не понял, что делает патч. Я ожидаю услышать ответ, желательно по-русски и подробно.

@dmytrokyrychuk
Copy link
Contributor

@eg0r так объясни подробне, что изменилось, твой же PR.

@egorsmkv
Copy link
Contributor

@lorien автор же написал, что он делает.

@orgkhnargh посмотри на автора PR.

@lorien
Copy link
Owner

lorien commented Feb 21, 2015

Повторяю в третий раз. Я не понял, что написал автор PR.
On Feb 22, 2015 5:09 AM, "Egor Smolyakov" notifications@github.com wrote:

@lorien https://github.com/lorien автор же написал, что он делает.

@orgkhnargh https://github.com/orgkhnargh посмотри на автора PR.


Reply to this email directly or view it on GitHub
#91 (comment).

@nodermann2
Copy link
Contributor Author

Привет, с подсветкой кода, я не разобрался, поэтому вставлю так, запустите код ниже, когда паук завершится, отпишитесь сюда.

from grab.spider import Spider, Task
import logging

logging.basicConfig(level=logging.DEBUG)

class MiniSpider(Spider):
def task_generator(self):
self.slave = True
yield Task('page', 'http://google.ru/')

def task_page(self, grab, task):
    print 'ok, finishing'

spider = MiniSpider()
spider.run()

@lorien
Copy link
Owner

lorien commented Feb 22, 2015

Запустил код. Паук завершился. Что дальше? Может быть, хватит загадками писать?

Кстати, смысл вашего кода я не понял в том числе. Зачем вы в task_generator выставляете slave=True? Смысл slave=True как раз в том, чтобы task_generator не запускался.

@nodermann2
Copy link
Contributor Author

У меня в бесконечном цикле работает, я тоже мысли не читаю, откуда я могу знать смысл slave? Отмена значит.

@lorien
Copy link
Owner

lorien commented Feb 22, 2015

Т.е. вы не знаете что делает slave=True, но присылаете патч, который изменяет эту настройку? :) Мне кажется, комментарии тут излишни.

@lorien
Copy link
Owner

lorien commented Feb 22, 2015

я тоже мысли не читаю
откуда я могу знать смысл slave?

Можно и без телепатии обойтись. Например, можно в исходный код посмотреть: https://github.com/lorien/grab/blob/master/grab/spider/base.py#L899

@lorien
Copy link
Owner

lorien commented Feb 22, 2015

Бесконечного цикла там нет, slave спайдер 5 секунд ждёт заданий, а потом завершает работу.

@nodermann2
Copy link
Contributor Author

Опускаться до вашего уровня и тролить я не буду, просто с уважением относитесь к вашим пользователям, которым нравится ваша библиотека. Про slave документации не нашел, и читал дискуссии в вашей группе, из прочитанного я понял, что он не дает завершаться спайдеру, если еще могут появиться задачи, этого у меня не происходило и был бесконечный цикл, поэтому прислал патч, слишком много слов написано из за одной строки кода. Закончил.

@lorien
Copy link
Owner

lorien commented Feb 22, 2015

Уважаемый @ilucian сам себя троллит тем, что :

  • решает, как работает библиотека путём чтения гугл-группы, а не анализом исходного кода
  • не может внятно объяснить, что делает его патч, а пишет какие-то намёки и загадки
  • присылает примеры, которые не служат иллюстрацией его проблемы. Потом пишет, что если что-то изменить в примере, то он будет иллюстрировать проблему

Резюмирую, @ilucian не понимает, что делает slave=True, проблему внятно не объяснил, примера, повторящего проблему не предоставил, прислал патч, который делает непонятно что, хочет, чтобы я его уважал, только по той причине, что он пользуется моей библиотекой.

Извините @ilucian я не понимаю, зачем вам моё уважение, тем более, что вы считаете, чо выше меня уровнем :)

@lorien lorien closed this Feb 22, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants