BeanStalkd в Solaris ничего не возвращает при вызове из библиотеки python - PullRequest
2 голосов
/ 25 июня 2009

Я использую ОС Solaris 10 (x86). я установил beanstalkd, и он запускается нормально с помощью команды "beanstalkd -d -l hostip -p 11300".

В моей системе установлен Python 2.4.4. Я установил библиотеки Python YAML и beanstalkc для соединения beanstalkd с python. Моя проблема возникает, когда я пытаюсь написать код:

импорт beanstalkc beanstalk = beanstalkc.Connection (хост = 'hostip', порт = 11300)

пока нет ошибок, но когда я пытаюсь сделать что-то на beanstalk, как, скажем, список очередей ничего не происходит.

beanstalk.tubes ()

просто зависает и ничего не возвращается. если я отменяю операцию (используя ctr + c в python env.) или останавливаю сервер, я немедленно вижу вывод:

Traceback (последний вызов был последним): Файл "", строка 1, в? Файл "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py", строка 134, в пробирках вернуть self._interact_yaml ('list-tube \ r \ n', ['OK']) Файл "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py", строка 83, в _interact_yaml размер, = self._interact (команда, Ожидаемый_ок, ожидаемый_err) Файл "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py", строка 57, в _interact статус, результаты = self._read_response () Файл "/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py", строка 66, в _read_response response = self.socket_file.readline (). split () Файл "/usr/lib/python2.4/socket.py", строка 332, в readline data = self._sock.recv (self._rbufsize)

Есть идеи, что происходит? Я новичок в Unix, поэтому я понятия не имею, что я сделал неправильно, чтобы вызвать это.

edit: похоже, проблема в самом BeanStalkd, кто-нибудь использовал это в Solaris 10? если да, то какую версию вы использовали? V1.3, помеченный как one, не компилируется в Solaris, в то время как последний из репозитория git-кода компилирует его, что вызывает вышеуказанную проблему (или, возможно, в Solaris есть какая-то конфигурация?).

edit2: я установил и скомпилировал те же компоненты с beanstalkd, PyYAML, pythonbeanstalc и libevent для машины UBUNTU, и все работает нормально. Похоже, проблемы связаны с компиляцией beanstalkd на солярисе, я еще не смог найти или прочитать какое-либо решение.

Ответы [ 3 ]

1 голос
/ 26 июня 2009

После просмотра в коде (beanstalkc):

ваш клиент отправил сообщение «Список рассылки» и ждет ответа. (пока не убьешь) ваш сервер не отвечает или не может отправить ответ клиенту. (или ответ короче, чем ожидал клиент)

является сетевым администратором на вашей стороне (или сайте): -)

1 голос
/ 07 июля 2009

Я могу знать, что не так: не запускайте его в режиме демона (-d).Я испытал то же самое, и случайно обнаружил, что не так.

Вернее, я не знаю, что не так, но он работает без запуска в режиме демона.

./ beanstalkd -p 9977 &

в качестве альтернативы.

1 голос
/ 25 июня 2009

Похоже, что Python-клиент слушает сервер, но серверу нечего сказать.

Есть что почитать для клиента?

Есть ли потребитель и производитель?

Посмотрите на это

...