Skip to content

Commit ff25acd

Browse files
committed
add atexit handler
1 parent fcd662e commit ff25acd

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

dataspin/core.py

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import atexit
12
import os
3+
import time
24
import tempfile
35
import importlib
46
from boltons.fileutils import atomic_save
@@ -7,7 +9,6 @@
79
from dataspin.utils.common import uuid_generator, marshal, format_timestring
810
from dataspin.utils.schedule import add_schedule, run_scheduler
911
from dataspin.functions import creat_function_with
10-
from multiprocessing import Process, Pool
1112
from basepy.log import logger
1213

1314

@@ -258,7 +259,10 @@ def _load(self):
258259
def start(self):
259260
if self.is_fetch_job and self._schedules:
260261
for schedule_str in self._schedules:
261-
add_schedule(schedule_str, self.run)
262+
add_schedule(schedule_str, self.run_in_pool)
263+
264+
def run_in_pool(self):
265+
self.engine.run_data_process(self.run)
262266

263267
def run(self):
264268
def append_or_extend(datafiles, newfile):
@@ -321,17 +325,17 @@ def task_list(self):
321325
class SpinEngine:
322326
def __init__(self, conf):
323327
self.conf = conf
324-
# self.runner_pool = Pool(4)
325328
self.config = {}
326329
self.sources = {}
327330
self.streams = {}
328331
self.storages = {}
329332
self.data_views = {}
330333
self.data_processes = {}
331-
self.stop_scheduler_event = run_scheduler()
334+
self.stop_scheduler_event, self.scheduler_thread = run_scheduler()
332335
self.load()
333336
self.uuid = 'project_' + uuid_generator()
334337
self.temp_dir_path = os.path.join(os.getcwd(), self.uuid)
338+
atexit.register(self.join)
335339

336340
@property
337341
def working_dir(self):
@@ -363,16 +367,16 @@ def load(self):
363367

364368
def run(self):
365369
for process_name, process in self.data_processes.items():
366-
self.run_process(process)
367-
368-
def run_process(self, process):
369-
process.run()
370-
# self.runner_pool.apply_async(process.run)
370+
process.run()
371371

372372
def start(self):
373373
for _, process in self.data_processes.items():
374374
process.start()
375375

376+
def run_data_process(self, process_fn):
377+
process_fn()
378+
376379
def join(self):
377380
self.stop_scheduler_event.set()
378-
self.runner_pool.join()
381+
time.sleep(3)
382+
self.scheduler_thread.join()

dataspin/utils/schedule.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,6 @@ def run(cls):
107107
scheduler.run_pending()
108108
time.sleep(interval)
109109

110-
continuous_thread = ScheduleThread()
111-
continuous_thread.start()
112-
return stop_scheduler_event
110+
scheduler_thread = ScheduleThread()
111+
scheduler_thread.start()
112+
return stop_scheduler_event, scheduler_thread

0 commit comments

Comments
 (0)