Пример #1
0
import abc
import socket
import uuid
from typing import Type, Any

import celery
from kombu import Exchange, Queue

from mediawords.util.config import get_config as py_get_config
from mediawords.util.log import create_logger

log = create_logger(__name__)


class McAbstractJobException(Exception):
    """AbstractJob exception."""
    pass


class _CeleryTask(celery.Task):
    """Internal Celery task."""

    __slots__ = [
        '__job_class',
    ]

    def __init__(self, job_class: Type['AbstractJob']):
        """Constructor."""
        self.__job_class = job_class

    def run(self, *args, **kwargs) -> None:
Пример #2
0
from typing import Union, Dict

from mediawords.util.log import create_logger
from mediawords.util.network import tcp_port_is_open, wait_for_tcp_port_to_open, wait_for_tcp_port_to_close
from mediawords.util.perl import decode_object_from_bytes_if_needed

# if no port is specified, start searching for an open port sequentially at this port
START_RANDOM_PORT = 7777


class McHashServerException(Exception):
    """HashServer exception."""
    pass


log = create_logger(__name__)


class HashServer(object):
    """Simple HTTP server that just serves a set of pages defined by a simple dictionary.

    It is intended to make it easy to startup a simple server seeded with programmer defined content.

    Sample pages dictionary:

        def __sample_callback(request: HashServer.Request) -> Union[str, bytes]:
            response = ""
            response += "HTTP/1.0 200 OK\r\n"
            response += "Content-Type: text/plain\r\n"
            response += "\r\n"
            response += "This is callback."