Проблемы со скриптом Python на веб-хостинге - PullRequest
0 голосов
/ 26 мая 2009

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

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /home/tris1601/thewikipediaforum.com/pywikipedia/wikitest.py
   35 site = wikipedia.getSite()
   36 newpage = wikipedia.Page(site, u"User:Dottydotdot/test")
   37 newpage.put(text + "<br><br>'''Imported from [http://en.wikiquote.org '''Wikiquote'''] by [[User:DottyQuoteBot|'''DottyQuoteBot''']]", u"Testing")
   38 
   39 wikipedia.stopme()
newpage = Page{[[User:Dottydotdot/test]]}, newpage.put = <bound method Page.put of Page{[[User:Dottydotdot/test]]}>, text = u'You have so many things in the background that y... could possibly work?" <p> [[Ward Cunningham]] \n'
 /home/tris1601/thewikipediaforum.com/pywikipedia/wikipedia.py in put(self=Page{[[User:Dottydotdot/test]]}, newtext=u"You have so many things in the background that y...''] by [[User:DottyQuoteBot|'''DottyQuoteBot''']]", comment=u'Testing', watchArticle=None, minorEdit=True, force=False, sysop=False, botflag=True)
 1380 
 1381         # Check blocks
 1382         self.site().checkBlocks(sysop = sysop)
 1383 
 1384         # Determine if we are allowed to edit
self = Page{[[User:Dottydotdot/test]]}, self.site = <bound method Page.site of Page{[[User:Dottydotdot/test]]}>, ).checkBlocks undefined, sysop = False
 /home/tris1601/thewikipediaforum.com/pywikipedia/wikipedia.py in checkBlocks(self=wikipedia:en, sysop=False)
 4457         if self._isBlocked[index]:
 4458             # User blocked
 4459             raise UserBlocked('User is blocked in site %s' % self)
 4460 
 4461     def isBlocked(self, sysop = False):
global UserBlocked = <class wikipedia.UserBlocked>, self = wikipedia:en
UserBlocked: User is blocked in site wikipedia:en 
      args = ('User is blocked in site wikipedia:en',)

Есть идеи, почему это не работает?

Спасибо, высоко ценится!

Ответы [ 2 ]

1 голос
/ 26 мая 2009

Возможно, заблокирован ваш хост (Dreamhost), а не ваш пользователь.

0 голосов
/ 26 мая 2009

Я бы начал с добавления отладки. Можете ли вы захватить вывод, который вы отправляете в Википедию, и результаты, которые он восстанавливает? Вероятно, там есть еще какая-то информация, которую вы можете извлечь, чтобы понять, почему она не работает.

[Изменить] т. Е. отладка - трудно дать совет, учитывая небольшой фрагмент, который вы предоставили. Тот факт, что у вас более 3,5 тыс. Строк в одном файле, говорит о том, что в нем либо есть довольно неэффективное кодирование, либо проблема была не особенно хорошо решена ... что может сделать отладку более сложной.

Сказав это, .put (), упомянутый в отладке выше, почти наверняка отправляет запрос на сервер. Вы можете начать с распечатки этих запросов или битов запроса. Чтобы попытаться собрать воедино, какой запрос отправляется, а затем попытаться выполнить только эти запросы и записать результат, используя команду печати python:

print "Sending '%s' to server%(my_put_request)

... где my_put_request - это биты данных, которые вы отправляете.

[Edit2] Я только что заметил, что вы используете этот скрипт бота pywikipedia. В статье в википедии о боте упоминаются некоторые пункты о разрешениях , которые подтверждают предположения угадалов о том, что это проблема с доступом. Вполне возможно, что википедия признает IP-адрес сновидений и что кто-то еще пытался сделать что-то плохое в прошлом, что вызвало их каким-то образом заблокировать.

...