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:
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."