mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-25 03:43:58 +00:00
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""This module can be used to execute Scrapyd from a Scrapy command"""
|
|
|
|
import sys
|
|
import os
|
|
from cStringIO import StringIO
|
|
|
|
from twisted.python import log
|
|
from twisted.internet import reactor
|
|
from twisted.application import app
|
|
|
|
from scrapy.utils.project import project_data_dir
|
|
|
|
from scrapyd import get_application
|
|
from scrapyd.config import Config
|
|
|
|
def _get_config():
|
|
datadir = os.path.join(project_data_dir(), '.scrapy', 'scrapyd')
|
|
conf = {
|
|
'eggs_dir': os.path.join(datadir, 'eggs'),
|
|
'logs_dir': os.path.join(datadir, 'logs'),
|
|
'dbs_dir': os.path.join(datadir, 'dbs'),
|
|
}
|
|
for k in ['eggs_dir', 'logs_dir', 'dbs_dir']: # create dirs
|
|
d = conf[k]
|
|
if not os.path.exists(d):
|
|
os.makedirs(d)
|
|
scrapyd_conf = """
|
|
[scrapyd]
|
|
eggs_dir = %(eggs_dir)s
|
|
logs_dir = %(logs_dir)s
|
|
dbs_dir = %(dbs_dir)s
|
|
""" % conf
|
|
return Config(extra_sources=[StringIO(scrapyd_conf)])
|
|
|
|
def execute():
|
|
config = _get_config()
|
|
log.startLogging(sys.stderr)
|
|
application = get_application(config)
|
|
app.startApplication(application, False)
|
|
reactor.run()
|