mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-23 15:04:27 +00:00
added command for starting a scrapyd server for the current project
This commit is contained in:
parent
5a46ce47ee
commit
7b84591ea9
22
scrapy/commands/scrapyd.py
Normal file
22
scrapy/commands/scrapyd.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
from scrapy.command import ScrapyCommand
|
||||||
|
from scrapy.exceptions import UsageError
|
||||||
|
|
||||||
|
class Command(ScrapyCommand):
|
||||||
|
|
||||||
|
requires_project = True
|
||||||
|
|
||||||
|
def short_desc(self):
|
||||||
|
return "Start Scrapyd server for this project"
|
||||||
|
|
||||||
|
def long_desc(self):
|
||||||
|
return "Start Scrapyd server for this project, which can be referred " \
|
||||||
|
"from the JSON API with the name 'default'"
|
||||||
|
|
||||||
|
def run(self, args, opts):
|
||||||
|
try:
|
||||||
|
from scrapyd.script import execute
|
||||||
|
execute()
|
||||||
|
except ImportError:
|
||||||
|
raise UsageError("Scrapyd is not available in this system")
|
40
scrapyd/script.py
Normal file
40
scrapyd/script.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
"""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()
|
Loading…
x
Reference in New Issue
Block a user