Esempio n. 1
0
def gnome(out_q, treasure):
    logger = get_logger('queue', 'queue_proc.log')
    while True:
        for i in range(randint(1, 10)):
            data = choice(treasure)
            out_q.put(data)
        logger.info('Gnome was working. Now rest...')
        time.sleep(.1)
Esempio n. 2
0
def gnome(out_q, treasures):
    logger = get_logger('queue_proc', 'queue_proc.log')
    while True:
        # Гном-производитель откапывает случайное сокровище
        for i in range(randint(1,10)):
            data = choice(treasures)
            out_q.put(data)
        logger.info('Гном. Немного поработал, немного отдохну...')
        time.sleep(0.1)
Esempio n. 3
0
def gnome_king(in_q):
    gnomes_cave = []
    logger = get_logger('queue', 'queue_proc.log')
    while True:
        data = in_q.get()
        if data is None:
            logger.info('King: i have to exit')
            logger.info('Queue: {}'.format(in_q.qsize()))
            break
        logger.info('The King: gnome bring me {}'.format(data))
        gnomes_cave.append(data)
    logger.info('King: gnome bring me {}'.format(Counter(gnomes_cave)))
    return gnomes_cave
Esempio n. 4
0
def gnome_king(in_q):
    logger = get_logger('queue_proc', 'queue_proc.log')
    gnomes_cave = []
    while True:
        # Получаем данные из очереди
        data = in_q.get()
        if data is None:
            logger.info('Король. Упс, меня попросили выйти'.format(data))
            break
        logger.info('Король. Гном принёс мне {}'.format(data))
        # Кладём сокровища в... сберкассу
        gnomes_cave.append(data)
    return gnomes_cave
Esempio n. 5
0
from os import path
import asyncio
import datetime
import hashlib
import traceback

from aiohttp import web
import aiohttp_jinja2
from aiohttp_auth import auth

from hvd_calendar import get_workdays_delta
import months
import app_log
import pymongo
import settings as S
log = app_log.get_logger()

CRITICAL_TIMEDELTA = datetime.timedelta(hours=12)
AVAILIBLE_UNTIL_TIMEDELTA = {
    'first': datetime.timedelta(hours=9, minutes=20),
    'second': datetime.timedelta(hours=14),
    'third': datetime.timedelta(hours=12),
}


async def process_response(self, request, response):
    """Called to perform any processing of the response required.

    This function stores any cookie data in the COOKIE_AUTH_KEY as a
    cookie in the response object. If the value is a empty string, the
    associated cookie is deleted instead.
Esempio n. 6
0
# coding=utf-8

from db import db
from misc import string_to_date, unisafe
from datetime import datetime, date, timedelta
from app import app

from app_log import get_logger

log = get_logger(__name__)


class Vacation(db.Model):
    types = {
        "vacation": 0,
        "sick_leave": 1,
        "child_birth": 2,
        "training": 3,
        "other": 99,
    }
    readable_types = {
        0: u"",
        1: u"baixa",
        2: u"parto",
        3: u"formação",
        99: u"outro",
    }

    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.Integer)
    date = db.Column(db.Date)
Esempio n. 7
0
import time
from collections import Counter
from queue import Queue
from random import choice, randint
from threading import Thread

from app_log import get_logger

gnomes_cave = []
treasure = ('Gold', 'Silver', 'Diamonds', 'Ruby')
logger = get_logger('queue_thread', 'queue.log')


def gnome(out_q):
    while True:
        for i in range(randint(1, 10)):
            data = choice(treasure)
            out_q.put(data)
        logger.info('Gnome was working. Now rest...')
        time.sleep(.1)


def gnome_king(in_q):
    while True:
        data = in_q.get()
        logger.info('The King: gnome bring me {}'.format(data))
        gnomes_cave.append(data)


q = Queue()
t1 = Thread(target=gnome_king, args=(q, ), daemon=True)
Esempio n. 8
0
# ----------------- Пример работы с очередью в потоках ------------------------

# Модуль queue реализует различные типы очередей,
# поддерживающих возможность доступа из множества потоков
# и обеспечивающих сохранность информации при обмене данными между разными потоками

import time
from random import choice, randint
from collections import Counter
from threading import Thread
from queue import Queue

from app_log import get_logger

logger = get_logger('queue', 'queue.log')
treasure = ('золото', 'серебро', 'алмазы', 'рубины')
gnomes_cave = []


# Гном-производитель
def gnome(out_q):
    while True:
        # Гном-производитель откапывает случайное сокровище
        for i in range(randint(1, 10)):
            data = choice(treasure)

            # .put(item) добавляет элемент item в очередь
            out_q.put(data)

        logger.info('Гном. Немного поработал, немного отдохну...')
        time.sleep(0.1)
Esempio n. 9
0
# coding=utf-8

from db import db
from misc import string_to_date, unisafe
from datetime import datetime,date,timedelta
from app import app

from app_log import get_logger
log= get_logger(__name__)

class Vacation(db.Model):
    types= {
        "vacation":     0, 
        "sick_leave":   1, 
        "child_birth":  2, 
        "training":     3, 
        "other":        99,
        }
    readable_types= {
        0:u"",
        1:u"baixa",
        2:u"parto",
        3:u"formação",
        99:u"outro",
        }
    
    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.Integer)
    date= db.Column(db.Date)
    username = db.Column(db.String(30), db.ForeignKey('user.username'))
    user = db.relationship('User', backref=db.backref('vacations', lazy='dynamic'))
Esempio n. 10
0
import time
from random import randint
from collections import deque
from threading import Thread, Condition

from app_log import get_logger


logger = get_logger('condition','condition.log')
q = deque()

# Переменная состояния (condition variable) – это механизм синхронизации,
# надстроенный на уже имеющейся блокировке, который используется потоками,
# когда требуется дождаться наступления определенного состояния или появления события.
# Переменные состояния обычно используются в схемах поставщик-потребитель,
# когда один поток производит данные, а другой обрабатывает их.

flag = Condition()

# Решим схему "Производитель-Потребитель" через использование Condition

def producer():
    i = 0
    while True:
        flag.acquire()

        while len(q) < 100:
            logger.info('Мороженщик. Мороженого мало ({}). Произвожу!'.format(len(q)))
            q.append('Мороженое-{}'.format(i))
            i += 1