2012-04-13 5 views
0

Например: У меня есть задача с именем «URLDownload», функция задачи - загрузить большой файл из Интернета. Теперь у меня есть рабочий процесс, но есть около 1000 файлов для загрузки. Клиентскому процессу легко создать 1000 задач и отправить их на сервер Gearman.PYTHON Gearman Worker принимает несколько задач

Мой вопрос является рабочий процесс сделает задачу один на один, или он будет принимать несколько задач в одно время,

Если рабочий процесс может принимать несколько задач, так как я могу ограничить задачу -pool-size в рабочем процессе.

+0

Взгляните на мой вопрос (очень похожий) - в принципе, похоже, что нет встроенного способа сделать это, но вы можете достичь его с помощью beanstalkd, если необходимо. http://stackoverflow.com/questions/9550574/a-queuing-system-which-supports-job-batching-e-g-several-jobs-for-1-worker-at – Aurimas

ответ

2

Работники обрабатывают один запрос за раз. У вас есть несколько вариантов:

1) Вы можете запускать нескольких сотрудников (это наиболее распространенный метод). Рабочие сидят в опросе(), когда они не обрабатываются, поэтому эта модель работает очень хорошо.

2) Напишите реализацию fork() вокруг рабочего. Таким образом, вы можете запустить определенное количество рабочих процессов, но не должны контролировать несколько процессов.

Смежные вопросы