Pull to refresh
142
2
Дмитрий Первушин @DimaFromMai

@Manualmsdos

Send message

Не стал сильно углубляться, хотел скорее на базовом сделать акцент, но идея хорошая, возможно в будущем напишу и про это.

Опечатка, сейчас поправлю, спасибо.

Различные вкусные и приятные бонусы, это мы любим.

Пукан конечно горит от того, что новые технологии вроде этой могут забрать нашу работу, но тут ничего не поделаешь, чай не первый раз такое происходит в истории и вроде как-то пережили, пока пережили.

Хорошие новости, наконец-то, ну не мог я пользоваться новым редактором, но теперь попробую, раз уж такое дело.

Специфика работы такая, да, легаси это проблема не только сбера. Но самое главное в подобных организациях это т.н. безопасники, их требования порой, даже и не знаешь, как вообще могло такое в голову прийти, а делать надо и как правило не оптимальным путём, а путём как предложили эти самые безопасники плюс к этому различные бизнес требования и вот это всё в легаси и нужно поддерживать и дописывать вот так и получается то, что получается. Учитывая это сбер ещё не так плох. Ни к чему не призываю, просто личное субьективное мнение.

Честно говоря совсем не в теме, но прочитал с удовольствием, спасибо автору, хорошая статья.

Спасибо за статью, честно говоря даже и не знал, что есть что-то ещё кроме Яндекса.

Да, было бы интересно. Хотя на мой вгляд и в том и в другом случае докопаться до исходника вполне можно, другой вопрос, где это будет сложнее сделать.

Любопытно, а для чего может понадобиться 32GB RAM у одноплатника? У меня в компе в два раза меньше памяти стоит.

Можно и обойтись, добавлен с двумя целями:


  • Если отправлять новости со своего логина через telethon, то сообщения в телеграме будут помечены как прочитанные. Это неудобно, когда заходишь в телефон обычно сразу смотришь на непрочитанные сообщения.
  • Если вдруг случится фатальная ошибка и отвалится один из источников новостей или вдруг накроется весь агрегатор, то в таком случае сообщение с ошибкой об этом через бот отправляется напрямую в новостной канал через telegram api (telethon клиент может уже не работать)

В файле main.py в сложном агрегаторе вот в этой функции:


Показать...
def check_pattern_func(text):
    '''Вибирай только посты или статьи про газпром или газ'''
    words = text.lower().split()

    key_words = [
        'газп',     # газпром
        'газо',     # газопровод, газофикация...
        'поток',    # сервеный поток, северный поток 2, южный поток
        'спг',      # спг - сжиженный природный газ
        'gazp',
    ]

    for word in words:
        if 'газ' in word and len(word) < 6:  # газ, газу, газом, газа
            return True

        for key in key_words:
            if key in word:
                return True

    return False

Она кстати не всегда срабатывает верно, частенько может новость про турпоток или финпоток пропустить. Но в принципе это не так страшно. Там сейчас фильтруются новости про газпром, газ и всё с этим связанное.

UPD
Телеграм канал, на котором можно оценить работу агрегатора @gazp_news, новости добавляются в будние дни в промежутке с 9:30 до 18:45-23:00, в это время у меня обычно включен тонкий клиент.

Никогда бы и не подумал, что фильм снят в стольких разных местах. Просто колоссальное количество локаций, когда смотришь кино, этого просто не замечаешь.

Поправил.
cache-async-few-threads-microservice.py


Показать...
import fastapi
import httpx
from scrapy.selector import Selector
import aioredis

api = fastapi.FastAPI()
redis = None

@api.on_event('startup')
async def startup_event():
    global redis
    redis = await aioredis.create_redis(address=('redis', 6379))

@api.on_event('shutdown')
async def shutdown_event():
    redis.close()
    await redis.wait_closed()

@api.get('/api/weather/{city}')
async def weather(city: str):
    # redis = await aioredis.create_redis(address=('redis', 6379))

    # get cache from memory
    cache = await redis.get(city)

    # check value from cache, if exists return it
    if cache is not None:
        return {'city':city, 'temperature':cache, 'source':'cache'}

    url = f'https://pogoda.mail.ru/prognoz/{city}/'

    # asynchronous implementation
    async with httpx.AsyncClient() as client:
        response = await client.get(url)
        response.raise_for_status()

    selector = Selector(text=response.text)
    t = selector.xpath('//div[@class="information__content__temperature"]/text()').getall()[1].strip()

    # save cache in memory for 1 hour
    await redis.set(city, t, expire=3600)

    return {'city':city, 'temperature':t, 'source':'pogoda.mail.ru'}

Когда только начинал, читал вообще всё подряд, но когда начинаешь торговать всё получается по другому, не так как написано. По крайней мере мне так показалось.

Спасибо за статью, увидел себя во многих моментах.

Всякое может быть конечно, но не думаю, что сильный повтороный рост может случиться в обозримом будущем. Хотя конечно кто знает, тут я только на свой опыт могу опираться, пруфов у меня нет.


Тут скорее, сидишь себе, спокойно приторговываешь и вдруг новость прилетает, дескать vk дал +80%, в другой день ещё что нибудь +30%. И думешь, как это так получилось, а может я как нибудь смогу угадать, кто следующим будет? Собственно так и пришёл к мысли разобраться, в чём тут дело.

Information

Rating
1,327-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity