mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-23 04:23:47 +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