2012-08-31 7 views
8

Esta es una publicación bastante larga, pero después de hacer una extensa investigación no pude encontrar una solución. Tengo un proyecto mixto Django 1.4.1/Scrapy 0.14.4 en OSX 10.8 y controlo Scrapy con el comando manage.py del proyecto Django como se describe en here. Por ejemplo, llamando alNo se puede importar el módulo de configuración de Scrapy o su scrapy.cfg

python manage.py scrapy crawl example_spider 

funciona sin problemas. Ahora estoy en el punto donde quiero configurar el servicio web scrapyd para desplegar mis arañas. Sin embargo, cuando ejecuto

python manage.py scrapy server 

en cuando me siento esta excepción:

scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir 

Así que, al parecer Scrapy no puede encontrar el archivo scrapy.cfg porque no ejecutarlo desde dentro del proyecto Scrapy. El otro Scrapy comandos de trabajo, sin embargo, debido a que en mi proyecto de Django settings.py hice lo siguiente:

sys.path.append('/absolute/path/to/my/Scrapy/project') 
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings' 

Pregunta 1: ¿Por qué no Scrapy detectar el archivo scrapy.cfg en mi configuración? ¿Cómo puedo resolver esto?


Dado que el material mencionado anteriormente no funciona, he tratado de conseguir el scrapyd servidor que ejecuta utilizando sólo el mando scrapy de dentro de mi directorio del proyecto Scrapy. La ejecución de scrapy server desde el directorio de nivel superior de mi proyecto Scrapy se obtiene la siguiente:

$ scrapy server 
UserWarning: Cannot import scrapy settings module my_scrapy_project_name.settings 
warnings.warn("Cannot import scrapy settings module %s" % scrapy_module) 
2012-08-31 21:58:31+0200 [-] Log opened. 
2012-08-31 21:58:32+0200 [-] Scrapyd web console available at http://localhost:6800/ 
2012-08-31 21:58:32+0200 [Launcher] Scrapyd started: max_proc=8, runner='scrapyd.runner' 
2012-08-31 21:58:32+0200 [-] Site starting on 6800 
2012-08-31 21:58:32+0200 [-] Starting factory <twisted.web.server.Site instance at 0x101dd3d88> 

El servidor está funcionando sin ningún problema, sin embargo, el archivo settings.py de mi proyecto Scrapy no se puede encontrar debido a que la variable de entorno respectivo no es establecer más. Es por eso que hago lo siguiente en mi terminal:

export PYTHONPATH=/absolute/path/to/my/Scrapy/project 
export SCRAPY_SETTINGS_MODULE=my_scrapy_project_name.settings 

Lamentablemente, estos dos comandos no tienen ningún efecto. Cada vez que ejecuto scrapy server (o cualquier otro comando de Scrapy), aparece el mensaje de que Scrapy no puede importar el módulo de configuración de su proyecto.

Mi scrapy.cfg sólo tiene el siguiente contenido en la actualidad

[settings] 
default = my_scrapy_project_name.settings 

[deploy:scrapyd] 
url = http://localhost:6800/ 
project = my_scrapy_project_name 

Cuando intento de desplegar mi proyecto Scrapy al servidor scrapyd, parece funcionar al principio, pero luego me di cuenta de que ninguno de los Se han subido arañas, probablemente porque el archivo de configuración no se pudo detectar. Aquí está la salida de la consola:

$ scrapy deploy scrapyd -p my_scrapy_project_name 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- 
packages/scrapy/utils/project.py:17: UserWarning: Cannot import scrapy 
settings module my_scrapy_project_name.settings 
warnings.warn("Cannot import scrapy settings module %s" % 
scrapy_module) 
Building egg of event_crawler-1346531706 
'build/lib' does not exist -- can't clean it 
'build/bdist.macosx-10.6-intel' does not exist -- can't clean it 
'build/scripts-2.7' does not exist -- can't clean it 
zip_safe flag not set; analyzing archive contents... 
Deploying event_crawler-1346531706 to http://localhost:6800/addversion.json 
Server response (200): 
{"status": "ok", "project": "my_scrapy_project_name", "version": "1346531706", "spiders": 0} 

Pregunta 2: ¿Cómo hacer la exportación correcta de la variable de ruta y el medio ambiente por encima de que esta advertencia desaparece?

Pregunta 3: Desde el servidor scrapyd parece funcionar muy bien sin embargo, ¿cómo puedo subir mis arañas correctamente?

¡Muchas gracias de antemano!

Respuesta

2

hay 3 enlaces dentro de la wiki of scrapy:

the first one y second one están tanto frente a los problemas con Django y Scrapy valores conflictivos.

esperanza esto ayuda ...

incluso this question en SO aborda muchos de los entornos con problemas entre Django y scrapy

+1

Gracias por indicarme la wiki. No estaba al tanto del hecho de que hay una wiki comunitaria en la página github de Scrapy. [Este tutorial] (http://www.sammyliu.com/2012/06/22/tutorial-scrapy-and-django) me dio la pista esencial: no solo tengo que mover el archivo 'scrapy.cfg' al directorio más alto del proyecto Django pero también a todo el directorio del proyecto Scrapy. Ahora mis arañas pueden cargarse correctamente en el servidor Scrapyd y se reconocen todas las variables de entorno. Entonces, como me indicaste la dirección correcta, te otorgo la recompensa. Besten Dank, Ralf. :) – pemistahl

2

Si nos fijamos en la code branch that raises this exception y la definition of the closest_scrapy_cfg function que llama, el único lugar scrapy está buscando su scrapy.cfg está en el directorio desde el que ejecuta el comando y en cualquier directorio padre. Puede ejecutar os.chdir en su manage.py, o mover su scrapy.cfg al directorio desde el que se está ejecutando.

+0

Ya he intentado mover el archivo 'scrapy.cfg' al mismo directorio donde está el archivo' manage.py'. Funciona, pero el problema de que ninguna de mis arañas está cargada en el servidor todavía existe. La exportación de las variables de entorno no funciona. – pemistahl

Cuestiones relacionadas