mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-26 19:03:53 +00:00
38 lines
942 B
Python
38 lines
942 B
Python
|
import os
|
||
|
import shutil
|
||
|
import tempfile
|
||
|
from contextlib import contextmanager
|
||
|
|
||
|
from scrapyd import get_application
|
||
|
from scrapyd.interfaces import IEggStorage
|
||
|
from scrapyd.eggutils import activate_egg
|
||
|
|
||
|
@contextmanager
|
||
|
def project_environment(project):
|
||
|
app = get_application()
|
||
|
eggstorage = app.getComponent(IEggStorage)
|
||
|
version, eggfile = eggstorage.get(project)
|
||
|
if eggfile:
|
||
|
prefix = '%s-%s-' % (project, version)
|
||
|
fd, eggpath = tempfile.mkstemp(prefix=prefix, suffix='.egg')
|
||
|
lf = os.fdopen(fd, 'wb')
|
||
|
shutil.copyfileobj(eggfile, lf)
|
||
|
lf.close()
|
||
|
activate_egg(eggpath)
|
||
|
else:
|
||
|
eggpath = None
|
||
|
try:
|
||
|
yield
|
||
|
finally:
|
||
|
if eggpath:
|
||
|
os.remove(eggpath)
|
||
|
|
||
|
def main():
|
||
|
project = os.environ['SCRAPY_PROJECT']
|
||
|
with project_environment(project):
|
||
|
from scrapy.cmdline import execute
|
||
|
execute()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|