Skip to content

Instantly share code, notes, and snippets.

@genme
genme / aproducer.py
Created April 29, 2020 14:25 — forked from dabeaz/aproducer.py
"Build Your Own Async" Workshop - PyCon India - October 14, 2019 - https://www.youtube.com/watch?v=Y4Gt3Xjd7G8
# aproducer.py
#
# Async Producer-consumer problem.
# Challenge: How to implement the same functionality, but no threads.
import time
from collections import deque
import heapq
class Scheduler:
@genme
genme / pycurses.py
Created December 25, 2018 09:05 — forked from claymcleod/pycurses.py
Python curses example
import sys,os
import curses
def draw_menu(stdscr):
k = 0
cursor_x = 0
cursor_y = 0
# Clear and refresh the screen for a blank canvas
stdscr.clear()
from typing import (
TypeVar,
Type,
Optional,
List,
Any,
Callable
)
import dataclasses
import inspect
@genme
genme / datetime.java
Created February 23, 2018 16:13 — forked from salomvary/datetime.java
Java 8 Date and Time Parsing and Formatting Microtutorial
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
Instant.now();
// java.time.Instant = 2015-08-13T09:28:27.141Z
DateTimeFormatter.ISO_INSTANT.format(Instant.now());
xn--80aejlkhkvigj4jej.xn--p1ai
async with aiohttp.ClientSession() as session:
async with session.get('https://api.github.com/events') as resp:
print(resp.status)
print(await resp.text())
Деплой fab -f import_api.py -H analytic,process5 deploy_update
Описалово и рекомендации: практически не было случаев чтобы сервис падал с ошибкой, но бывает что публикации не верно форматируются
или и вовсе не разбираются. Форматирование публикации задается в ModelAttrVisitor и реализациях. Для каждого информ. агенства
есть своя реализация visitor. Обработка amqp сообщения происходит в BaseImportConsumerHandler и реализациях. Для каждого
информ. агенства есть своя реализация handler. Реализация занимается преобразованием форматов (doc в docx и т.д), хранит парсер
и запускает у парсер метод parse. FactivaConsumerHandler хранит еще и конкретный посетитель и наверное это правильно - если хочешь,
можешь переносить посетители из парсеров в хендлеры. Если для информ. агенств импортируются документы, парсеры принимаю на вход
высокоуровнивые обертки: docx.api.Document для docx и очopenpyxl.workbook.workbook.Workbook для xlsx. Типичный парсер разбирает
импортируемый документ и генерирует модели News и Source, аггреги
{
"author": null,
"created": "2016-08-02T02:30:00",
"id": "a7782476ac2a82683f5416cfb7a8639f14452439",
"image": [],
"source": {
"id": "53210662198c7e66ffe19eca08c649575cb54bd6",
"level_name": null,
"logo": null,
"name": "PrimMarketing.ru",
_id = r'[a-zA-Z0-9-_]+'
# @formatter:off
# URLs удобнее читать без форматирования по PEP
ENDPOINTS = (
endpoint(r"/", MainRequestHandler), # +
endpoint(r"/_configuration", ConfRequestHandler), # +
endpoint(r"/report", r.ReportRequestHandler), # +-
endpoint(r"/report".format(_id), r.ReportRequestHandler), # +-
endpoint(r"/report/(?P<report_id>{})".format(_id), r.ReportRequestHandler), # +-
@genme
genme / periodic.py
Created April 6, 2016 12:02 — forked from akaIDIOT/periodic.py
Call something periodically using asyncio
import asyncio
def call_periodic(interval, callback, *args, **kwargs):
# get loop as a kwarg or take the default one
loop = kwargs.get('loop') or asyncio.get_event_loop()
# record the loop's time when call_periodic was called
start = loop.time()
def run(handle):