mirror of https://github.com/scrapy/scrapy.git
Using time_id instead of time as a timestamp
This commit is contained in:
parent
ec76445dd6
commit
f0f1be76d1
|
|
@ -441,9 +441,9 @@ An integer number which represent number of scraped items stored in each output
|
|||
file. Whenever the number of items exceeds this setting, a new file
|
||||
creates and output redirects to it. The name of the new file will be selected
|
||||
based on timestamp when the feed is being created and/or batch sequence number.
|
||||
Therefore you must specify %(time)s or %(batch_id)s or both in the file path.
|
||||
Therefore you must specify %(time_id)s or %(batch_id)s or both in the file path.
|
||||
|
||||
* ``%(time)s`` - gets replaced by a timestamp when the feed is being created
|
||||
* ``%(time_id)s`` - gets replaced by a timestamp when the feed is being created
|
||||
* ``%(batch_id)s`` - gets replaced by sequence number of batch
|
||||
|
||||
For instance::
|
||||
|
|
@ -452,7 +452,7 @@ For instance::
|
|||
|
||||
Your request can be like::
|
||||
|
||||
scrapy crawl spidername -o dirname/%(batch_id)s-filename%(time)s.json
|
||||
scrapy crawl spidername -o dirname/%(batch_id)s-filename%(time_id)s.json
|
||||
|
||||
The result directory tree of above can be like::
|
||||
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ class FeedExporter:
|
|||
:param uri: uri of the new batch to start
|
||||
:param feed: dict with parameters of feed
|
||||
:param spider: user spider
|
||||
:param template_uri: template uri which contains %(time)s or %(batch_id)s to create new uri
|
||||
:param template_uri: template uri which contains %(time_id)s or %(batch_id)s to create new uri
|
||||
"""
|
||||
if previous_batch_slot is not None:
|
||||
previous_batch_id = previous_batch_slot.batch_id
|
||||
|
|
@ -360,12 +360,12 @@ class FeedExporter:
|
|||
|
||||
def _batch_deliveries_supported(self, uri):
|
||||
"""
|
||||
If FEED_STORAGE_BATCH_SIZE setting is specified uri has to contain %(time)s or %(batch_id)s
|
||||
If FEED_STORAGE_BATCH_SIZE setting is specified uri has to contain %(time_id)s or %(batch_id)s
|
||||
to distinguish different files of partial output
|
||||
"""
|
||||
if self.storage_batch_size is None or '%(time)s' in uri or '%(batch_id)s' in uri:
|
||||
if self.storage_batch_size is None or '%(time_id)s' in uri or '%(batch_id)s' in uri:
|
||||
return True
|
||||
logger.warning('%(time)s or %(batch_id)s must be in uri if FEED_STORAGE_BATCH_SIZE setting is specified')
|
||||
logger.warning('%(time_id)s or %(batch_id)s must be in uri if FEED_STORAGE_BATCH_SIZE setting is specified')
|
||||
return False
|
||||
|
||||
def _storage_supported(self, uri):
|
||||
|
|
@ -397,8 +397,9 @@ class FeedExporter:
|
|||
params = {}
|
||||
for k in dir(spider):
|
||||
params[k] = getattr(spider, k)
|
||||
params['time'] = datetime.utcnow().replace(microsecond=0).isoformat().replace(':', '-')
|
||||
params['time_id'] = datetime.utcnow().isoformat().replace(':', '-')
|
||||
params['batch_id'] = slot.batch_id + 1 if slot is not None else 1
|
||||
params['time'] = datetime.utcnow().isoformat().replace(':', '-')
|
||||
uripar_function = load_object(uri_params) if uri_params else lambda x, y: None
|
||||
uripar_function(params, spider)
|
||||
return params
|
||||
|
|
|
|||
|
|
@ -989,7 +989,7 @@ class FeedExportTest(FeedExportTestBase):
|
|||
|
||||
class PartialDeliveriesTest(FeedExportTestBase):
|
||||
__test__ = True
|
||||
_file_mark = '_%(time)s_#%(batch_id)s_'
|
||||
_file_mark = '_%(time_id)s_#%(batch_id)s_'
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def run_and_export(self, spider_cls, settings):
|
||||
|
|
@ -1146,7 +1146,7 @@ class PartialDeliveriesTest(FeedExportTestBase):
|
|||
yield self.assertExported(items, header, rows, settings=settings)
|
||||
|
||||
def test_wrong_path(self):
|
||||
""" If path is without %(time)s or %(batch_id)s an exception must be raised """
|
||||
""" If path is without %(time_id)s or %(batch_id)s an exception must be raised """
|
||||
settings = {
|
||||
'FEEDS': {
|
||||
self._random_temp_filename(): {'format': 'xml'},
|
||||
|
|
@ -1236,7 +1236,7 @@ class PartialDeliveriesTest(FeedExportTestBase):
|
|||
def test_batch_path_differ(self):
|
||||
"""
|
||||
Test that the name of all batch files differ from each other.
|
||||
So %(time)s replaced with the current date.
|
||||
So %(time_id)s replaced with the current date.
|
||||
"""
|
||||
items = [
|
||||
self.MyItem({'foo': 'bar1', 'egg': 'spam1'}),
|
||||
|
|
@ -1245,7 +1245,7 @@ class PartialDeliveriesTest(FeedExportTestBase):
|
|||
]
|
||||
settings = {
|
||||
'FEEDS': {
|
||||
os.path.join(self._random_temp_filename(), '%(time)s'): {
|
||||
os.path.join(self._random_temp_filename(), '%(time_id)s'): {
|
||||
'format': 'json',
|
||||
},
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue