fractal-server 2.0.6__py3-none-any.whl → 2.2.0a0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fractal_server/__init__.py +1 -1
- fractal_server/app/routes/admin/v1.py +2 -4
- fractal_server/app/routes/admin/v2.py +2 -4
- fractal_server/app/routes/api/v1/_aux_functions.py +24 -0
- fractal_server/app/routes/api/v1/job.py +3 -4
- fractal_server/app/routes/api/v1/project.py +28 -18
- fractal_server/app/routes/api/v2/_aux_functions.py +35 -12
- fractal_server/app/routes/api/v2/job.py +3 -4
- fractal_server/app/routes/api/v2/project.py +21 -0
- fractal_server/app/routes/api/v2/submit.py +36 -15
- fractal_server/app/routes/aux/_job.py +3 -1
- fractal_server/app/routes/aux/_runner.py +3 -3
- fractal_server/app/runner/executors/slurm/executor.py +169 -68
- fractal_server/app/runner/shutdown.py +88 -0
- fractal_server/app/runner/task_files.py +59 -27
- fractal_server/app/runner/v1/__init__.py +38 -27
- fractal_server/app/runner/v1/_common.py +53 -51
- fractal_server/app/runner/v1/_local/__init__.py +12 -11
- fractal_server/app/runner/v1/_local/_submit_setup.py +4 -4
- fractal_server/app/runner/v1/_slurm/__init__.py +16 -16
- fractal_server/app/runner/v1/_slurm/_submit_setup.py +11 -10
- fractal_server/app/runner/v1/_slurm/get_slurm_config.py +6 -6
- fractal_server/app/runner/v2/__init__.py +47 -15
- fractal_server/app/runner/v2/_local/__init__.py +12 -11
- fractal_server/app/runner/v2/_local/_local_config.py +1 -1
- fractal_server/app/runner/v2/_local/_submit_setup.py +4 -4
- fractal_server/app/runner/v2/_local_experimental/__init__.py +145 -0
- fractal_server/app/runner/v2/_local_experimental/_local_config.py +108 -0
- fractal_server/app/runner/v2/_local_experimental/_submit_setup.py +42 -0
- fractal_server/app/runner/v2/_local_experimental/executor.py +152 -0
- fractal_server/app/runner/v2/_slurm/__init__.py +10 -10
- fractal_server/app/runner/v2/_slurm/_submit_setup.py +11 -10
- fractal_server/app/runner/v2/_slurm/get_slurm_config.py +6 -6
- fractal_server/app/runner/v2/runner.py +17 -15
- fractal_server/app/runner/v2/runner_functions.py +38 -38
- fractal_server/app/runner/v2/runner_functions_low_level.py +12 -6
- fractal_server/app/security/__init__.py +4 -5
- fractal_server/config.py +35 -1
- fractal_server/gunicorn_fractal.py +40 -0
- fractal_server/{logger/__init__.py → logger.py} +2 -2
- fractal_server/main.py +45 -26
- {fractal_server-2.0.6.dist-info → fractal_server-2.2.0a0.dist-info}/METADATA +1 -1
- {fractal_server-2.0.6.dist-info → fractal_server-2.2.0a0.dist-info}/RECORD +46 -41
- fractal_server/logger/gunicorn_logger.py +0 -19
- {fractal_server-2.0.6.dist-info → fractal_server-2.2.0a0.dist-info}/LICENSE +0 -0
- {fractal_server-2.0.6.dist-info → fractal_server-2.2.0a0.dist-info}/WHEEL +0 -0
- {fractal_server-2.0.6.dist-info → fractal_server-2.2.0a0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
import logging
|
2
|
+
import os
|
3
|
+
import signal
|
4
|
+
|
5
|
+
from gunicorn.glogging import Logger as GunicornLogger
|
6
|
+
from uvicorn.workers import UvicornWorker
|
7
|
+
|
8
|
+
logger = logging.getLogger("uvicorn.error")
|
9
|
+
|
10
|
+
|
11
|
+
class FractalGunicornLogger(GunicornLogger):
|
12
|
+
error_fmt = r"%(asctime)s - gunicorn.error - %(levelname)s - [pid %(process)d] - %(message)s" # noqa: E501
|
13
|
+
datefmt = r"%Y-%m-%d %H:%M:%S,%u"
|
14
|
+
|
15
|
+
|
16
|
+
class FractalWorker(UvicornWorker):
|
17
|
+
"""
|
18
|
+
Subclass of uvicorn workers, which also captures SIGABRT and handles
|
19
|
+
it within the `custom_handle_abort` method.
|
20
|
+
"""
|
21
|
+
|
22
|
+
def init_signals(self) -> None:
|
23
|
+
super().init_signals()
|
24
|
+
signal.signal(signal.SIGABRT, self.custom_handle_abort)
|
25
|
+
logger.info(
|
26
|
+
f"[FractalWorker.init_signals - pid={self.pid}] "
|
27
|
+
"Set `custom_handle_abort` for SIGABRT"
|
28
|
+
)
|
29
|
+
|
30
|
+
def custom_handle_abort(self, sig, frame):
|
31
|
+
"""
|
32
|
+
Custom version of `gunicorn.workers.base.Worker.handle_abort`,
|
33
|
+
transforming SIGABRT into SIGTERM.
|
34
|
+
"""
|
35
|
+
self.alive = False
|
36
|
+
logger.info(
|
37
|
+
f"[FractalWorker.custom_handle_abort - pid={self.pid}] "
|
38
|
+
"Now send SIGTERM to process."
|
39
|
+
)
|
40
|
+
os.kill(self.pid, signal.SIGTERM)
|
@@ -17,8 +17,8 @@ from pathlib import Path
|
|
17
17
|
from typing import Optional
|
18
18
|
from typing import Union
|
19
19
|
|
20
|
-
from
|
21
|
-
from
|
20
|
+
from .config import get_settings
|
21
|
+
from .syringe import Inject
|
22
22
|
|
23
23
|
|
24
24
|
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
fractal_server/main.py
CHANGED
@@ -15,11 +15,16 @@
|
|
15
15
|
|
16
16
|
This module sets up the FastAPI application that serves the Fractal Server.
|
17
17
|
"""
|
18
|
+
import os
|
19
|
+
from contextlib import asynccontextmanager
|
20
|
+
|
18
21
|
from fastapi import FastAPI
|
19
22
|
|
23
|
+
from .app.runner.shutdown import cleanup_after_shutdown
|
20
24
|
from .app.security import _create_first_user
|
21
25
|
from .config import get_settings
|
22
26
|
from .logger import config_uvicorn_loggers
|
27
|
+
from .logger import get_logger
|
23
28
|
from .logger import reset_logger_handlers
|
24
29
|
from .logger import set_logger
|
25
30
|
from .syringe import Inject
|
@@ -77,15 +82,47 @@ def check_settings() -> None:
|
|
77
82
|
reset_logger_handlers(logger)
|
78
83
|
|
79
84
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
"""
|
85
|
+
@asynccontextmanager
|
86
|
+
async def lifespan(app: FastAPI):
|
87
|
+
app.state.jobsV1 = []
|
88
|
+
app.state.jobsV2 = []
|
89
|
+
logger = set_logger("fractal_server.lifespan")
|
90
|
+
logger.info("Start application startup")
|
87
91
|
check_settings()
|
92
|
+
settings = Inject(get_settings)
|
93
|
+
await _create_first_user(
|
94
|
+
email=settings.FRACTAL_DEFAULT_ADMIN_EMAIL,
|
95
|
+
password=settings.FRACTAL_DEFAULT_ADMIN_PASSWORD,
|
96
|
+
username=settings.FRACTAL_DEFAULT_ADMIN_USERNAME,
|
97
|
+
is_superuser=True,
|
98
|
+
is_verified=True,
|
99
|
+
)
|
88
100
|
config_uvicorn_loggers()
|
101
|
+
logger.info("End application startup")
|
102
|
+
reset_logger_handlers(logger)
|
103
|
+
yield
|
104
|
+
logger = get_logger("fractal_server.lifespan")
|
105
|
+
logger.info("Start application shutdown")
|
106
|
+
logger.info(
|
107
|
+
f"Current worker with pid {os.getpid()} is shutting down. "
|
108
|
+
f"Current jobs: {app.state.jobsV1=}, {app.state.jobsV2=}"
|
109
|
+
)
|
110
|
+
if settings.FRACTAL_RUNNER_BACKEND == "slurm":
|
111
|
+
try:
|
112
|
+
await cleanup_after_shutdown(
|
113
|
+
jobsV1=app.state.jobsV1,
|
114
|
+
jobsV2=app.state.jobsV2,
|
115
|
+
logger_name="fractal_server.lifespan",
|
116
|
+
)
|
117
|
+
except Exception as e:
|
118
|
+
logger.error(
|
119
|
+
"Something went wrong during shutdown phase, "
|
120
|
+
"some of running jobs are not shutdown properly. "
|
121
|
+
f"Original error: {e}"
|
122
|
+
)
|
123
|
+
|
124
|
+
logger.info("End application shutdown")
|
125
|
+
reset_logger_handlers(logger)
|
89
126
|
|
90
127
|
|
91
128
|
def start_application() -> FastAPI:
|
@@ -96,27 +133,9 @@ def start_application() -> FastAPI:
|
|
96
133
|
app:
|
97
134
|
The fully initialised application.
|
98
135
|
"""
|
99
|
-
app = FastAPI()
|
136
|
+
app = FastAPI(lifespan=lifespan)
|
100
137
|
collect_routers(app)
|
101
138
|
return app
|
102
139
|
|
103
140
|
|
104
141
|
app = start_application()
|
105
|
-
|
106
|
-
|
107
|
-
@app.on_event("startup")
|
108
|
-
async def on_startup() -> None:
|
109
|
-
"""
|
110
|
-
Register the starup calls
|
111
|
-
|
112
|
-
If the calls raise any error, the application startup is aborted.
|
113
|
-
"""
|
114
|
-
settings = Inject(get_settings)
|
115
|
-
await _create_first_user(
|
116
|
-
email=settings.FRACTAL_DEFAULT_ADMIN_EMAIL,
|
117
|
-
password=settings.FRACTAL_DEFAULT_ADMIN_PASSWORD,
|
118
|
-
username=settings.FRACTAL_DEFAULT_ADMIN_USERNAME,
|
119
|
-
is_superuser=True,
|
120
|
-
is_verified=True,
|
121
|
-
)
|
122
|
-
await __on_startup()
|
@@ -1,4 +1,4 @@
|
|
1
|
-
fractal_server/__init__.py,sha256=
|
1
|
+
fractal_server/__init__.py,sha256=SlW0tbws1kw-jGFxFPps51tRVcdJnYWiGo7Se8A6BwY,24
|
2
2
|
fractal_server/__main__.py,sha256=CocbzZooX1UtGqPi55GcHGNxnrJXFg5tUU5b3wyFCyo,4958
|
3
3
|
fractal_server/alembic.ini,sha256=MWwi7GzjzawI9cCAK1LW7NxIBQDUqD12-ptJoq5JpP0,3153
|
4
4
|
fractal_server/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -23,26 +23,26 @@ fractal_server/app/models/v2/workflow.py,sha256=YBgFGCziUgU0aJ5EM3Svu9W2c46AewZO
|
|
23
23
|
fractal_server/app/models/v2/workflowtask.py,sha256=3jEkObsSnlI05Pur_dSsXYdJxRqPL60Z7tK5-EJLOks,1532
|
24
24
|
fractal_server/app/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
25
|
fractal_server/app/routes/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
fractal_server/app/routes/admin/v1.py,sha256=
|
27
|
-
fractal_server/app/routes/admin/v2.py,sha256=
|
26
|
+
fractal_server/app/routes/admin/v1.py,sha256=jTTCq_NXEwnPJR5QEBImt58xoGuUVsAlZDiPX4iCtlo,13955
|
27
|
+
fractal_server/app/routes/admin/v2.py,sha256=zqLTdxs1pU_EBkdoQL912CQUWTZJhIr-PBdAOMymgSA,13716
|
28
28
|
fractal_server/app/routes/api/__init__.py,sha256=EVyZrEq3I_1643QGTPCC5lgCp4xH_auYbrFfogTm4pc,315
|
29
29
|
fractal_server/app/routes/api/v1/__init__.py,sha256=Y2HQdG197J0a7DyQEE2jn53IfxD0EHGhzK1I2JZuEck,958
|
30
|
-
fractal_server/app/routes/api/v1/_aux_functions.py,sha256=
|
30
|
+
fractal_server/app/routes/api/v1/_aux_functions.py,sha256=CeaVrNVYs_lEbiJbu4uaTeeiajljeXfdq1iLkt5RoRo,12636
|
31
31
|
fractal_server/app/routes/api/v1/dataset.py,sha256=HRE-8vPmVkeXf7WFYkI19mDtbY-iJZeJ7PmMiV0LMgY,16923
|
32
|
-
fractal_server/app/routes/api/v1/job.py,sha256=
|
33
|
-
fractal_server/app/routes/api/v1/project.py,sha256=
|
32
|
+
fractal_server/app/routes/api/v1/job.py,sha256=xdRtTR9NUwC98n3H1Tt0eOVJQ79GlBE1D2Opqk-MeeE,5342
|
33
|
+
fractal_server/app/routes/api/v1/project.py,sha256=MxbJUc9H14ZZ8mmMbX3LXGTVR3sHdD26YSw4TKI7WtU,16108
|
34
34
|
fractal_server/app/routes/api/v1/task.py,sha256=udbKnenzc-Q10elYCVB9JmOPWATraa9tZi0AaByvWo0,6129
|
35
35
|
fractal_server/app/routes/api/v1/task_collection.py,sha256=mFaYyCWtCPRqvs3j6zx_zaiDXn31Uzoa7UHZS-Lu_L0,8882
|
36
36
|
fractal_server/app/routes/api/v1/workflow.py,sha256=7r9IoIevg_rvYCrerMOsIsUabSOQatxdPCfLdkP0dRs,10942
|
37
37
|
fractal_server/app/routes/api/v1/workflowtask.py,sha256=qcHQlzlSFf_k8gtId-mA3tnyzgSR7i1m7pvR4R86blE,5582
|
38
38
|
fractal_server/app/routes/api/v2/__init__.py,sha256=UNgODxoEXfQpQDjvsnMvHaUWbZOrcHhEXNisLcU-0tE,1487
|
39
|
-
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=
|
39
|
+
fractal_server/app/routes/api/v2/_aux_functions.py,sha256=tYJr5EPaA0CVGp-Y4jottFJUVToWvjcSY6PJqN_d--s,14938
|
40
40
|
fractal_server/app/routes/api/v2/dataset.py,sha256=_HjKNP9XsMGoqyubGdF2ZyeW7vXC3VdK_0_TaUxgIF0,8248
|
41
41
|
fractal_server/app/routes/api/v2/images.py,sha256=4r_HblPWyuKSZSJZfn8mbDaLv1ncwZU0gWdKneZcNG4,7894
|
42
|
-
fractal_server/app/routes/api/v2/job.py,sha256=
|
43
|
-
fractal_server/app/routes/api/v2/project.py,sha256=
|
42
|
+
fractal_server/app/routes/api/v2/job.py,sha256=dBwOJmGtMLDmjCj-ZNXYcqYrikzqx9VHDySB7ogNaKE,5231
|
43
|
+
fractal_server/app/routes/api/v2/project.py,sha256=U4TxD-J4TtQuu1D4BOhL1kTse5fCiNc3BwGH7bnlo38,6592
|
44
44
|
fractal_server/app/routes/api/v2/status.py,sha256=osLexiMOSqmYcEV-41tlrwt9ofyFbtRm5HmPS5BU0t4,6394
|
45
|
-
fractal_server/app/routes/api/v2/submit.py,sha256=
|
45
|
+
fractal_server/app/routes/api/v2/submit.py,sha256=sqfeVw18mqzfgBTpb6Ix6KFdapGiaZ8u3BSyIUteLEc,8488
|
46
46
|
fractal_server/app/routes/api/v2/task.py,sha256=bRTtGgL8BBGbT7csVeRB-a54clgU2xHydi5XpcByDxg,8297
|
47
47
|
fractal_server/app/routes/api/v2/task_collection.py,sha256=eN3NkZaZHkrqnLGRKE7Xd5mo0cHc8aK2lojCt26ErOQ,8988
|
48
48
|
fractal_server/app/routes/api/v2/task_legacy.py,sha256=P_VJv9v0yzFUBuS-DQHhMVSOe20ecGJJcFBqiiFciOM,1628
|
@@ -50,8 +50,8 @@ fractal_server/app/routes/api/v2/workflow.py,sha256=2GlcYNjpvCdjwC_Kn7y0UP16B3pO
|
|
50
50
|
fractal_server/app/routes/api/v2/workflowtask.py,sha256=l4eTD5IIun5cOdYzsxh3ajmnOISaSccYA_mVf15Cjtw,8802
|
51
51
|
fractal_server/app/routes/auth.py,sha256=Xv80iqdyfY3lyicYs2Y8B6zEDEnyUu_H6_6psYtv3R4,4885
|
52
52
|
fractal_server/app/routes/aux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
-
fractal_server/app/routes/aux/_job.py,sha256=
|
54
|
-
fractal_server/app/routes/aux/_runner.py,sha256=
|
53
|
+
fractal_server/app/routes/aux/_job.py,sha256=EShKa9AMHy7zqlwPHGsKO6uE0LtXkqutO9wCCHbZzcU,1321
|
54
|
+
fractal_server/app/routes/aux/_runner.py,sha256=1PcWhJlxl9xyYo_BLoVcb1mJt2j6IGrj7AxPIIjckrw,724
|
55
55
|
fractal_server/app/runner/.gitignore,sha256=ytzN_oyHWXrGU7iFAtoHSTUbM6Rn6kG0Zkddg0xZk6s,16
|
56
56
|
fractal_server/app/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
57
|
fractal_server/app/runner/async_wrap.py,sha256=_O6f8jftKYXG_DozkmlrDBhoiK9QhE9MablOyECq2_M,829
|
@@ -64,36 +64,41 @@ fractal_server/app/runner/executors/slurm/_check_jobs_status.py,sha256=8d29a7DQ2
|
|
64
64
|
fractal_server/app/runner/executors/slurm/_executor_wait_thread.py,sha256=J3tjAx33nBgW4eHAXDte7hDs7Oe9FLEZaElEt8inrbg,4421
|
65
65
|
fractal_server/app/runner/executors/slurm/_slurm_config.py,sha256=rF37XDImX1QoWx37MC5hSM9AuY_KfHU5gaWwN4vl4Zk,15552
|
66
66
|
fractal_server/app/runner/executors/slurm/_subprocess_run_as_user.py,sha256=YwfJzZr_y4FL_hirHJdWK0vWzrldjoZZhXVFlO2AOMU,5131
|
67
|
-
fractal_server/app/runner/executors/slurm/executor.py,sha256=
|
67
|
+
fractal_server/app/runner/executors/slurm/executor.py,sha256=jieZE5LhsFqzjDAegynRV0jrNByEb-7Yx8YmtPr6ZS0,48208
|
68
68
|
fractal_server/app/runner/executors/slurm/remote.py,sha256=wLziIsGdSMiO-jIXM8x77JRK82g_2hx0iBKTiMghuIo,5852
|
69
69
|
fractal_server/app/runner/filenames.py,sha256=9lwu3yB4C67yiijYw8XIKaLFn3mJUt6_TCyVFM_aZUQ,206
|
70
70
|
fractal_server/app/runner/set_start_and_last_task_index.py,sha256=-q4zVybAj8ek2XlbENKlfOAJ39hT_zoJoZkqzDqiAMY,1254
|
71
|
-
fractal_server/app/runner/
|
72
|
-
fractal_server/app/runner/
|
73
|
-
fractal_server/app/runner/v1/
|
74
|
-
fractal_server/app/runner/v1/
|
71
|
+
fractal_server/app/runner/shutdown.py,sha256=I_o2iYKJwzku0L3E85ETjrve3QPECygR5xhhsAo5huM,2910
|
72
|
+
fractal_server/app/runner/task_files.py,sha256=mPxOokb5ha4sXzOXP-_-3978Tmuf5KOn2FbYRbDLQ0g,4044
|
73
|
+
fractal_server/app/runner/v1/__init__.py,sha256=BlOkhuUbLLCavyXT0ZqHrW0VvgW-pq5sjW8IZffU7DM,14155
|
74
|
+
fractal_server/app/runner/v1/_common.py,sha256=rF9IsOo_h_UyeCZ2hkHYPHsdgTjqLlGGig4wyrDS5CQ,21544
|
75
|
+
fractal_server/app/runner/v1/_local/__init__.py,sha256=KlSML4LqF4p1IfhSd8tAkiu3aeDzifeanuNXjATDsYE,6929
|
75
76
|
fractal_server/app/runner/v1/_local/_local_config.py,sha256=hM7SPxR07luXPcXdrWXRpEB2uOyjSSRUdqW3QBKJn9c,3147
|
76
|
-
fractal_server/app/runner/v1/_local/_submit_setup.py,sha256=
|
77
|
+
fractal_server/app/runner/v1/_local/_submit_setup.py,sha256=XyBDPb4IYdKEEnzLYdcYteIHWVWofJxKMmQCyRkn5Bc,1509
|
77
78
|
fractal_server/app/runner/v1/_local/executor.py,sha256=QrJlD77G6q4WohoJQO7XXbvi2RlCUsNvMnPDEZIoAqA,3620
|
78
|
-
fractal_server/app/runner/v1/_slurm/__init__.py,sha256=
|
79
|
-
fractal_server/app/runner/v1/_slurm/_submit_setup.py,sha256=
|
80
|
-
fractal_server/app/runner/v1/_slurm/get_slurm_config.py,sha256=
|
79
|
+
fractal_server/app/runner/v1/_slurm/__init__.py,sha256=u2rMOLAlvmnm9r4fYecIlZYhjYAWWvA5c8hVczTdJSs,10941
|
80
|
+
fractal_server/app/runner/v1/_slurm/_submit_setup.py,sha256=KO9c694d318adoPQh9UGwxLkw4fRIgybQ5h7QHQKLXQ,2828
|
81
|
+
fractal_server/app/runner/v1/_slurm/get_slurm_config.py,sha256=6pQNNx997bLIfLp0guF09t_O0ZYRXnbEGLktSAcKnic,5999
|
81
82
|
fractal_server/app/runner/v1/common.py,sha256=_L-vjLnWato80VdlB_BFN4G8P4jSM07u-5cnl1T3S34,3294
|
82
83
|
fractal_server/app/runner/v1/handle_failed_job.py,sha256=bHzScC_aIlU3q-bQxGW6rfWV4xbZ2tho_sktjsAs1no,4684
|
83
|
-
fractal_server/app/runner/v2/__init__.py,sha256=
|
84
|
-
fractal_server/app/runner/v2/_local/__init__.py,sha256=
|
85
|
-
fractal_server/app/runner/v2/_local/_local_config.py,sha256=
|
86
|
-
fractal_server/app/runner/v2/_local/_submit_setup.py,sha256=
|
84
|
+
fractal_server/app/runner/v2/__init__.py,sha256=blmnUJTpZn8uYPbQIb0xmwB93xNKpEoFIAi4UDqKbWM,13418
|
85
|
+
fractal_server/app/runner/v2/_local/__init__.py,sha256=KTj14K6jH8fXGUi5P7u5_RqEE1zF4aXtgPxCKzw46iw,5971
|
86
|
+
fractal_server/app/runner/v2/_local/_local_config.py,sha256=9oi209Dlp35ANfxb_DISqmMKKc6DPaMsmYVWbZLseME,3630
|
87
|
+
fractal_server/app/runner/v2/_local/_submit_setup.py,sha256=MucNOo8Er0F5ZIwH7CnTeXgnFMc6d3pKPkv563QNVi0,1630
|
87
88
|
fractal_server/app/runner/v2/_local/executor.py,sha256=QrJlD77G6q4WohoJQO7XXbvi2RlCUsNvMnPDEZIoAqA,3620
|
88
|
-
fractal_server/app/runner/v2/
|
89
|
-
fractal_server/app/runner/v2/
|
90
|
-
fractal_server/app/runner/v2/
|
89
|
+
fractal_server/app/runner/v2/_local_experimental/__init__.py,sha256=1aFDk61VqhFfbceRc1JEj6S4pik8kXk0xV_bSqRivTI,5260
|
90
|
+
fractal_server/app/runner/v2/_local_experimental/_local_config.py,sha256=QiS5ODe-iGmUQdIT8QgpbyMc7-ZpIRv1V_f2q3qfPQ8,3211
|
91
|
+
fractal_server/app/runner/v2/_local_experimental/_submit_setup.py,sha256=we7r-sQf0CJ9gxbfbgHcYdC6pKjx8eXweljIjthxkv8,1212
|
92
|
+
fractal_server/app/runner/v2/_local_experimental/executor.py,sha256=2rcWDAmxeNdV4UHqeusLStJ8ijSiDbcMJutdqkq0xZU,5258
|
93
|
+
fractal_server/app/runner/v2/_slurm/__init__.py,sha256=OUPsEpu37f9ohu7NfXtaqlQevxeg1Q3Gl4LwTkwl2So,4475
|
94
|
+
fractal_server/app/runner/v2/_slurm/_submit_setup.py,sha256=rvhMOK1QkqsxVWUvekT62KbDDlqpw49nq9mzQXSY3H0,2883
|
95
|
+
fractal_server/app/runner/v2/_slurm/get_slurm_config.py,sha256=btGmbZB0fO6bg2WujFxbGEV2iWzaMKbHgV1r2hm_4a0,6748
|
91
96
|
fractal_server/app/runner/v2/deduplicate_list.py,sha256=-imwO7OB7ATADEnqVbTElUwoY0YIJCTf_SbWJNN9OZg,639
|
92
97
|
fractal_server/app/runner/v2/handle_failed_job.py,sha256=M1r3dnrbUMo_AI2qjaVuGhieMAyLh5gcvB10YOBpjvI,5415
|
93
98
|
fractal_server/app/runner/v2/merge_outputs.py,sha256=IHuHqbKmk97K35BFvTrKVBs60z3e_--OzXTnsvmA02c,1281
|
94
|
-
fractal_server/app/runner/v2/runner.py,sha256=
|
95
|
-
fractal_server/app/runner/v2/runner_functions.py,sha256=
|
96
|
-
fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=
|
99
|
+
fractal_server/app/runner/v2/runner.py,sha256=uyO71VObtqLVfnFjazZH-UMpea02g8kS0DW2YoCVN2s,14278
|
100
|
+
fractal_server/app/runner/v2/runner_functions.py,sha256=3DSzdY11g97iXjTud-6rNxF8JKxCW8GDKfUFXis58M8,11311
|
101
|
+
fractal_server/app/runner/v2/runner_functions_low_level.py,sha256=kcmqX9gV8zBC1kiSpJJpNhWo62gH0vFPOwPbxNOwEMs,3884
|
97
102
|
fractal_server/app/runner/v2/task_interface.py,sha256=myS-kT0DsJ8xIJZBVEzgD8g54VbiwL6i7Im3e1zcVHQ,1866
|
98
103
|
fractal_server/app/runner/v2/v1_compat.py,sha256=t0ficzAHUFaaeI56nqTb4YEKxfARF7L9Y6ijtJCwjP8,912
|
99
104
|
fractal_server/app/schemas/__init__.py,sha256=jiIf54owztXupv3PO6Ilh0qcrkh2RUzKq4bcEFqEfc4,40
|
@@ -120,15 +125,15 @@ fractal_server/app/schemas/v2/task.py,sha256=7IfxiZkaVqlARy7WYE_H8m7j_IEcuQaZORU
|
|
120
125
|
fractal_server/app/schemas/v2/task_collection.py,sha256=sY29NQfJrbjiidmVkVjSIH-20wIsmh7G1QOdr05KoDQ,3171
|
121
126
|
fractal_server/app/schemas/v2/workflow.py,sha256=Zzx3e-qgkH8le0FUmAx9UrV5PWd7bj14PPXUh_zgZXM,1827
|
122
127
|
fractal_server/app/schemas/v2/workflowtask.py,sha256=atVuVN4aXsVEOmSd-vyg-8_8OnPmqx-gT75rXcn_AlQ,6552
|
123
|
-
fractal_server/app/security/__init__.py,sha256=
|
124
|
-
fractal_server/config.py,sha256=
|
128
|
+
fractal_server/app/security/__init__.py,sha256=2-QbwuR-nsuHM_uwKS_WzYvkhnuhO5jUv8UVROetyVk,11169
|
129
|
+
fractal_server/config.py,sha256=ZRD-Mwim6gmWnL2JKT2v6KS3uRgthd1FZQRHwN7MYOE,16392
|
125
130
|
fractal_server/data_migrations/README.md,sha256=_3AEFvDg9YkybDqCLlFPdDmGJvr6Tw7HRI14aZ3LOIw,398
|
131
|
+
fractal_server/gunicorn_fractal.py,sha256=2AOkgxu-oQ-XB578_voT0VuhmAXFTmb0c-nYn1XLy_Q,1231
|
126
132
|
fractal_server/images/__init__.py,sha256=xO6jTLE4EZKO6cTDdJsBmK9cdeh9hFTaSbSuWgQg7y4,196
|
127
133
|
fractal_server/images/models.py,sha256=9ipU5h4N6ogBChoB-2vHoqtL0TXOHCv6kRR-fER3mkM,4167
|
128
134
|
fractal_server/images/tools.py,sha256=gxeniYy4Z-cp_ToK2LHPJUTVVUUrdpogYdcBUvBuLiY,2209
|
129
|
-
fractal_server/logger
|
130
|
-
fractal_server/
|
131
|
-
fractal_server/main.py,sha256=OostfB8nyFKCySDTnIR64WlHg82eHkoykJgQg6se9xc,3556
|
135
|
+
fractal_server/logger.py,sha256=56wfka6fHaa3Rx5qO009nEs_y8gx5wZ2NUNZZ1I-uvc,5130
|
136
|
+
fractal_server/main.py,sha256=U50BfL1cxpkSMglRmEHILZE1yDpiUhyb4tlrNuE3j6s,4417
|
132
137
|
fractal_server/migrations/README,sha256=4rQvyDfqodGhpJw74VYijRmgFP49ji5chyEemWGHsuw,59
|
133
138
|
fractal_server/migrations/env.py,sha256=bsl0HGZpjhommztgcs7wQ94sJzI1Orgnij97K8P_uyo,2630
|
134
139
|
fractal_server/migrations/script.py.mako,sha256=oMXw9LC3zRbinWWPPDgeZ4z9FJrV2zhRWiYdS5YgNbI,526
|
@@ -163,8 +168,8 @@ fractal_server/tasks/v2/background_operations.py,sha256=MAMBn6W2bhkdK59kfUGiD7a1
|
|
163
168
|
fractal_server/tasks/v2/get_collection_data.py,sha256=Qhf2T_aaqAfqu9_KpUSlXsS7EJoZQbEPEreHHa2jco8,502
|
164
169
|
fractal_server/urls.py,sha256=5o_qq7PzKKbwq12NHSQZDmDitn5RAOeQ4xufu-2v9Zk,448
|
165
170
|
fractal_server/utils.py,sha256=b7WwFdcFZ8unyT65mloFToYuEDXpQoHRcmRNqrhd_dQ,2115
|
166
|
-
fractal_server-2.
|
167
|
-
fractal_server-2.
|
168
|
-
fractal_server-2.
|
169
|
-
fractal_server-2.
|
170
|
-
fractal_server-2.
|
171
|
+
fractal_server-2.2.0a0.dist-info/LICENSE,sha256=QKAharUuhxL58kSoLizKJeZE3mTCBnX6ucmz8W0lxlk,1576
|
172
|
+
fractal_server-2.2.0a0.dist-info/METADATA,sha256=0lsKheVy4TMM296RuFQsLpVjEh4dhdeYzTi6pTTzrCw,4224
|
173
|
+
fractal_server-2.2.0a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
174
|
+
fractal_server-2.2.0a0.dist-info/entry_points.txt,sha256=8tV2kynvFkjnhbtDnxAqImL6HMVKsopgGfew0DOp5UY,58
|
175
|
+
fractal_server-2.2.0a0.dist-info/RECORD,,
|
@@ -1,19 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
This module (which is only executed if `gunicorn` can be imported) subclasses
|
3
|
-
the gunicorn `Logger` class in order to slightly change its log formats.
|
4
|
-
|
5
|
-
This class can be used by including this `gunicorn` command-line option:
|
6
|
-
```
|
7
|
-
--logger-class fractal_server.logger.gunicorn_logger.FractalGunicornLogger
|
8
|
-
```
|
9
|
-
"""
|
10
|
-
|
11
|
-
try:
|
12
|
-
from gunicorn.glogging import Logger as GunicornLogger
|
13
|
-
|
14
|
-
class FractalGunicornLogger(GunicornLogger):
|
15
|
-
error_fmt = r"%(asctime)s - gunicorn.error - %(levelname)s - [pid %(process)d] - %(message)s" # noqa: E501
|
16
|
-
datefmt = r"%Y-%m-%d %H:%M:%S,%u"
|
17
|
-
|
18
|
-
except (ModuleNotFoundError, ImportError):
|
19
|
-
pass
|
File without changes
|
File without changes
|
File without changes
|