Ich stoße auf etwas Seltsames mit einer Variablen, auf die in anderen Funktionen nach dem Festlegen nicht zugegriffen werden kann. Dies ist eine Datei namens Sellerie Aufgabe html.py
Problem mit dem Python-Variablenbereich im Skript
base_path = ''
@app.task(bind=True)
def status(self):
"""
returns the count of files downloaded and the timestamp of the most recently downloaded file
"""
num_count = 0
latest_timestamp = ''
for root, _, filenames in os.walk(base_path):
for filename in filenames:
file_path = root + '/' + filename
file_timestamp = datetime.fromtimestamp(os.path.getctime(file_path))
if latest_timestamp == '' or file_timestamp > latest_timestamp:
latest_timestamp = file_timestamp
num_count += 1
@app.task(bind = True)
def download(self, url='', cl_id=-1):
if len(url) == 0 or cl_id < 0:
return None
base_path = settings.WGET_PATH + str(cl_id)
log_paths = {
'output' : wget_base_path + '/out.log',
'rejected' : wget_base_path + '/rejected.log'
}
create_files(log_paths)
wget_cmd = 'wget -prc --convert-links --html-extension --wait=3 --random-wait --no-parent ' \
'--directory-prefix={0} -o {1} --rejected-log={2} {3}'.\
format(wget_base_path, log_paths['output'], log_paths['rejected'], url)
subprocess.Popen(wget_cmd, shell = True)
Als ich das nennen über
from ingest.task import html
web_url = 'https://www.gnu.org/software/wget/manual/html_node/index.html'
ingest = html.download.delay(web_url, 54321)
der wget Prozess wie erwartet beginnt. Allerdings wird die base_path
Parameter am Anfang der Datei nie eingestellt, so, wenn ich rufe status
über
status = html.status.delay()
das base_path
Variable ist ein leerer String, trotz status
nach download
genannt zu werden. Liegt das daran, dass sich diese Aufgaben in einem Skript oder in einer Klasse befinden?
Hmm, ok. Danke für die Erklärung. Noch eine weitere Java-Erfahrung stolpert mich mit Python. – Jason