misc: use hobo.multitenant.spooler (#76430)
gitea/passerelle/pipeline/head This commit looks good
Details
gitea/passerelle/pipeline/head This commit looks good
Details
This commit is contained in:
parent
98a0cd8470
commit
225c76f191
|
@ -13,8 +13,7 @@ chmod-socket = 666
|
|||
vacuum = true
|
||||
|
||||
spooler-processes = 3
|
||||
spooler-python-import = hobo.provisionning.spooler
|
||||
spooler-python-import = passerelle.utils.spooler
|
||||
spooler-python-import = hobo.multitenant.spooler
|
||||
spooler-max-tasks = 20
|
||||
|
||||
# every five minutes
|
||||
|
|
|
@ -7,6 +7,7 @@ import itertools
|
|||
import logging
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import traceback
|
||||
import uuid
|
||||
|
@ -36,7 +37,7 @@ from model_utils.managers import InheritanceManager as ModelUtilsInheritanceMana
|
|||
|
||||
import passerelle
|
||||
from passerelle.forms import GenericConnectorForm
|
||||
from passerelle.utils import ImportSiteError
|
||||
from passerelle.utils import ImportSiteError, spooler
|
||||
from passerelle.utils.api import endpoint
|
||||
from passerelle.utils.jsonresponse import APIError
|
||||
from passerelle.utils.sftp import SFTP, SFTPField
|
||||
|
@ -849,13 +850,33 @@ class Job(models.Model):
|
|||
self.status_details.update({'new_job_pk': new_job.pk})
|
||||
self.save()
|
||||
|
||||
@classmethod
|
||||
def run_with_subprocess(cls, job_id):
|
||||
tenant = getattr(connection, 'tenant', None)
|
||||
domain = getattr(tenant, 'domain_url', None)
|
||||
|
||||
cmd_args = [
|
||||
settings.PASSERELLE_MANAGE_COMMAND,
|
||||
]
|
||||
|
||||
if domain:
|
||||
# multitenant installation
|
||||
cmd_args.append('tenant_command')
|
||||
|
||||
cmd_args += ['runjob', '--job-id', str(job_id)]
|
||||
|
||||
if domain:
|
||||
# multitenant installation
|
||||
cmd_args.append('--domain')
|
||||
cmd_args.append(domain)
|
||||
|
||||
# pylint: disable=subprocess-run-check
|
||||
subprocess.run(cmd_args)
|
||||
|
||||
def run(self, spool=False):
|
||||
if spool and self.pk:
|
||||
if 'uwsgi' in sys.modules and settings.PASSERELLE_MANAGE_COMMAND:
|
||||
from passerelle.utils.spooler import run_job
|
||||
|
||||
tenant = getattr(connection, 'tenant', None)
|
||||
run_job.spool(job_id=str(self.pk), domain=getattr(tenant, 'domain_url', None))
|
||||
if settings.PASSERELLE_MANAGE_COMMAND:
|
||||
spooler.run(Job.run_with_subprocess, job_id=self.pk)
|
||||
return
|
||||
|
||||
self.status = 'running'
|
||||
|
|
|
@ -291,6 +291,7 @@ LOGGED_REQUESTS_MAX_SIZE = 5000
|
|||
# Number of days to keep logs
|
||||
LOG_RETENTION_DAYS = 7
|
||||
|
||||
USE_NEW_SPOOLER = True
|
||||
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
|
|
|
@ -14,29 +14,9 @@
|
|||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import subprocess
|
||||
try:
|
||||
from hobo.multitenant.spooler import run # pylint: disable=unused-import
|
||||
except ImportError:
|
||||
|
||||
from uwsgidecorators import spool # pylint: disable=import-error
|
||||
|
||||
|
||||
@spool
|
||||
def run_job(args):
|
||||
from django.conf import settings
|
||||
|
||||
cmd_args = [
|
||||
settings.PASSERELLE_MANAGE_COMMAND,
|
||||
]
|
||||
|
||||
if args.get('domain'):
|
||||
# multitenant installation
|
||||
cmd_args.append('tenant_command')
|
||||
|
||||
cmd_args += ['runjob', '--job-id', args['job_id']]
|
||||
|
||||
if args.get('domain'):
|
||||
# multitenant installation
|
||||
cmd_args.append('--domain')
|
||||
cmd_args.append(args['domain'])
|
||||
|
||||
# pylint: disable=subprocess-run-check
|
||||
subprocess.run(cmd_args)
|
||||
def run(func, *args, **kwargs):
|
||||
func(*args, **kwargs)
|
||||
|
|
Loading…
Reference in New Issue