Я пишу программу, которая будет обновлять определенные элементы в фоновом режиме, она делает это в следующих шагах:
- Был ли этот пункт проверен в течение последнего часа, если нет:
- Запустите поток, чтобы обновить его в фоновом режиме.В потоке:
- загрузите веб-страницу и обработайте ее.
Эта обработка выполняется в потоке:
- , глядя на некоторыепеременные для других программных вещей,
- печать привета мне, чтобы посмотреть, как далеко он продвинулся,
- запуск функции с именем download_page,
- , принимающий элемент, возвращенный download_pageи предоставив его для обработки страницы
В верхней части страницы загрузки и страницы процесса я также поместил операторы печати, чтобы посмотреть, попадет ли она туда.
Проблема, с которой я столкнулсятак: в питоне все работает нормально.Однако, после того, как я его зацифровал, он доходит до оператора print, он прекрасно справляется с этой задачей, затем следующей строкой является запуск download_page с URL-адресом в качестве аргумента.Первая строка страницы загрузки - это оператор печати.Примите это на самом деле никогда не происходит.Он не отображает ошибку, не печатает, он как бы просто сдается.
Я проверил код, используя обычный python, и он работает нормально.То, что изначально привело меня к этому, было то, что он зависал с urllib, поэтому я перешел к запросам, думая, что это могло быть так, но потом после добавления в операторы печати, и тот, что в верхней части страницы загрузки, даже не запускался ...Я просто не уверен, что происходит не так.
Для справки, я прикрепил файл компиляции Cython ниже:
import setuptools
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("rss", ["rss.py"], extra_compile_args=['/openmp']),
# ... all your modules that need be compiled ...
]
setup(
name = 'RSS',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
Редактировать: Дополнительный код из программы:
globals.py:
pages={} # this stores loaded pages
pageurl=0 # what url to check
unseen=[] # pages that have been updated and not yet viewed
main file:
import globals as g
import threading
import requests
def updatepage():
if(threading.activeCount()>10):
return; # don't overload CPU's
print 'Hi, I am working' # did it get this far? In tests, it does.
thread1=threading.Thread(target = loadpage, args = [g.pageurl])
thread1.start()
def loadpage(url):
if(g.pages.has_key(url)==False):
g.feeds[url]={'feed': 0, 'checklimit': 7200, 'unseen': [], 'last_check': 0}
oldpage=g.pages[url]
print 'I am right here, just about to download' # another check statement, which works
fi=download_page(url)
# code below this point not related, as it never gets here
def download_page(url):
print url # it never does that
r = requests.get(url, allow_redirects=True)
print 'return step' # this never happens
return r.content