Можно ли использовать celery без rabbitmq и redis? Database only
Можно ли использовать celery без rabbitmq и redis? Чтобы работало исключительно с базой данных. celery-beats
Можно ли использовать celery без rabbitmq и redis? Чтобы работало исключительно с базой данных. celery-beats
Есть endpointA, приходит запрос на добавление записи. В таблице есть hook на post_save
@receiver(post_save, sender=Some)
def some_create(sender, instance, created, **kwargs):
...
В этом хуке some_create вызывает API endpointB. Допустим, endpointB лежит. Что делать? Нужно же куда-то записать эти данные, а потом, когда endpointB поднимется, сделать call API –> endpointB. Как правильно это организовывается? Чтобы я какой-нибудь велосипед не изобретал:)
defaults,noatime,commit=600,data=writeback,barrier=0,journal_async_commit 0 2
При commit=600 при poweroff рабочая станция не выключается. В принципе удобно, 32гб озу, все пишется в оперативку. Раз в 10 минут скидывается на диск. Все эти 10 минут на диск ничего не пишется, диск постоянно не дёргается. Пробовал делать в скрипте выключения перед «shutdown -h now» sync - не помогает. Сейчас сделал commit=60 - вроде всё ок, но хотелось бы commit=600
Кстати, какие еще есть опции оптимальные для ext4?
У меня dwm со своими патчами и настройками. Я не знаю как лучше сделать. У dwm есть особенность - там после patch надо исправлять кое-какие строки. Делать чистые патчи и потом патчить настройки - не думаю, что это целесообразно. Итак, есть на битбакете полностью работоспособный dwm. Варианты:
тянуть с битбакета(нужен ssh ключ + пароль, который я не знаю(хранится в keepassx). При установке проблематично его будет доставать с keepassx
Формировать tar.gz и класть его внутрь конфигурации(правильно ли это?). Распаковывать и собирать
Какие еще есть варианты?
Если у кого-то есть примеры сборки своего dwm - если поделитесь будет круто:)
Далее
Updating 5c5e62d..c463210
Fast-forward
app/apps/dictionaries/urls.py | 40 +---------------------------------------
1 file changed, 1 insertion(+), 39 deletions(-)
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
Looking in links: /python-packages
test_upper (test_example.TestExample) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
Total 0 (delta 0), reused 0 (delta 0)
To bitbucket.org:some-name.git
5c5e62d..c463210 master -> master
В визуализации и на битбакет нет мерджа ветки в мастер
Есть модули, которые подключаются в .bashrc. Есть функции some-A, some-B,some-C,some-D, для их запуска нужна функция some-Z. Но функция some-Z появляется в автодополнении, к примеру:
some-<TAB>
some-A some-B some-C some-Z
Как спрятать some-Z из этого вывода?
Сериализатор:
class GenderSerializer(serializers.Serializer):
name = serializers.SerializerMethodField()
def get_name(self, obj):
print("------------------")
print(obj)
print("------------------")
return "aaa"
# return _(obj.name)
Во вьюхе:
serializer_gender = GenderSerializer(data=[{'id': 1, 'name': 'GENDER_MAN'}, {'id': 2, 'name': 'GENDER_WOMAN'}], many=True)
serializer_gender.is_valid(raise_exception=True)
out:
------------------
{}
------------------
------------------
{}
------------------
Ок, есть
https://stackoverflow.com/questions/62045788/drf-serializer-return-translated-choice-field-value
во вьюхе я делаю:
language = kwargs.get('lang')
translation.activate(language)
и у меня не возвращаются переведенные field
message сгенерированы
msgid "gender_man"
msgstr "Мужчина"
msgid "gender_wooman"
msgstr "Женщина"
в модели вот так:
gender_man = 0
gender_wooman = 1
GENDER_CHOICES = (
(gender_man, _('gender_man')),
(gender_wooman, _('gender_wooman')),
)
name = models.TextField(choices=GENDER_CHOICES, verbose_name=_("Gender"))
```python
middleware подключен, LOCALE_PATHS настроен
MIDDLEWARE_CLASSES = [
'django.middleware.locale.LocaleMiddleware',
]
print(request.META.get('HTTP_ACCEPT_LANGUAGE'))
ru
>>> with translation.override('ru'):
... translation.gettext('gender_man')
'Мужчина'
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __str__(self):
return self.name
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
class Entry(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
headline = models.CharField(max_length=255)
body_text = models.TextField()
pub_date = models.DateField()
mod_date = models.DateField()
authors = models.ManyToManyField(Author)
number_of_comments = models.IntegerField()
number_of_pingbacks = models.IntegerField()
rating = models.IntegerField()
def __str__(self):
return self.headline
>>> from apps.dictionaries.models import Entry,Blog,Author
>>> Entry.objects.all().values()[0]
out:
{'id': 1, 'headline': 'Entry_headline1', 'pub_date': datetime.date(2020, 7, 9), 'number_of_comments': 1, 'mod_date': datetime.date(2020, 7, 12), 'rating': 1, 'body_text': 'Entry_body_text1', 'blog_id': 1, 'number_of_pingbacks': 1}
Т.е нет field ‘authors’
Далее, если я явно указываю field authors, тогда получаю следующее:
>>> Entry.objects.all().values('authors')[0]
out:
{'authors': 2}
Как мне выбрать в нормальном виде? Т.е
{'id': 1, 'headline': 'Entry_headline1', ..., 'authors': ['Author_name1'], ['Author_name2']
delete
Есть Выборка. Его следующая выборка:
queryset = Person.objects.filter(id=1)
<QuerySet [{'id': 1, 'some_param_id': 1, 'some_param_2': False,}]>
Есть таблица
class SomeTable(models.Model):
name = models.PositiveSmallIntegerField(
validators=[MinValueValidator(15), MaxValueValidator(250)],
verbose_name="some",
unique=True
)
в Person поле
some_param_id = models.IntegerField(validators=[MinValueValidator(1)], blank=True)
т.е не ForeignKey, prefetch_related не получится сделать
Мне нужно в первой выборке заменить значение 1 ключа some_param_id на SomeTable__name. Как это сделать?
param_fields = request.GET.get('fields') or None
if param_fields is not None:
param_fields = list(param_fields.split(","))
Чтобы два раза не создавать param_field
setxkbmap -layout us,ru -option "grp:shift_toggle,grp_led:scroll",ctrl:nocaps -variant ",winkeys"
Есть еще ctrl:swapcaps, который меняет местами ctrl и caps. А как сделать так, чтобы caps == ctrl, а сам ctrl отключить? Чтобы приучить себя 100% нажимать caps(как ctrl)?
Есть задача организовать отложенную запись данных(чтобы endpoint’ы не захлёбывались.
Как пример: Есть chat-data, который имеет апи записи и чтения сообщений. Есть entrypoint chat, который предоставляет клиенту возможность писать другому пользователю сообщения и читать сообщения, которые адресованы этому пользователю.
Если писать и читать сообщения напрямую, есть несколько узких мест:
Это просто пример, это касается всех действий пользователей, которые выполняют какие-то действия(события). Как это пофиксить? Скорей всего, необходим какой-то job-сервер, в который будут прилетать job’ы. Эндпоинт или entrypoint(?) подписывается на rabbitmq очередь, в которой он будет получать события «есть задача». Далее эндпоинт или энтрипоинт идет на job-сервер, блокирует записи, над которыми работает и начинает выполнять job’ы. Допустим в 8 потоков(настраиваемо должно быть). И выполняет их до тех пор, пока их не будет ноль. После выполнения - производится удаление job’ов.
Т.е получается, что chat chat-data могут быть отключены. При этом сообщения падают в job-сервер. Как только chat chat-data включаются, они заходят на job-сервер и начинают оттуда брать job’ы. Это правильно архитектурно? Или как-то по-другому надо делать?
Вопрос по job-серверу. Rabbitmq позволяет изменять messag’и? Т.е я делаю queue, туда прилетают job’ы. В отдельном queue прилетают нотификации о наличие job’ов. Эндпоинт или энтрипоинт выбирает несколько сообщений, блокирует их и начинает выполнять. По окончанию - удаляет их из queue. Rabbitmq позволит так делать? Или делать отдельный job-сервер с апи добавления задач и записи их, скажем, в postgresql?
Есть системный блок
https://i.ibb.co/3CpJDt0/IMG-20200702-190542.jpg
https://i.ibb.co/ZX8tWZP/IMG-20200702-190554.jpg
https://i.ibb.co/Ct10Z5H/IMG-20200702-190559.jpg
https://i.ibb.co/gStTtyN/IMG-20200702-190839.jpg
Передняя часть у корпуса - сплошная сетка с фильтрами. Но у боковушки есть вентиляция и тянет воздух оттуда, где сопротивление потоку ниже т.е не с передней части, а с боковой крышки. Я вот думаю, может залепить скотчем вентиляционные отверстия на боковой крышке? Тогда воздух будет тянуть с торца передней части корпуса т.е через фильтры
Как думаете, стоит закрывать вентиляционные отверстия скотчем на боковой крышке?
PS: сейчас скотч на боковой крышке - резонансы крышки убрал
Сделал я проект, скажем some-data. Есть отдельная репа common. Мои действия:
1. Создаю репу some-data
2. cd some-data
3. git init
4. change .git/config
5. git clone git@bitbucket.org:some_name/common.git
6 .git submodule add git@bitbucket.org:some_name/common.git;git submodule init
7. git add .;git commit;git push origin master
8. cd ..; rm -rf some-data
Далее я хочу проверить, всё ли ок
1. git clone --recurse-submodules -j8 git@bitbucket.org:some_name/some_data.git
2. cd some-data
ls -a common
. .. bash .git .gitignore python
cat common/.git
gitdir: ../.git/modules/common
cd common
touch 1; echo "wefwewwe" > 1
git add .;git commit;git push origin master
error: unable to push to unqualified destination: HEAD
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@bitbucket.org:some_name/common.git'
коммит проходит, но в репозитории common нет изменений, а в коммите some-data примерно такое:
-Subproject commit f971964634505ed3fd844675da0bd908c7d3a5a1
+Subproject commit 39ca9270f87da8276a8bd7e66f744f9c30e7352a
Как мне правильно примонтировать / в fstab?
UUID=some_uuid /home ext4 defaults,noatime,commit=60,data=writeback,barrier=0,journal_async_commit 0 2
/home/gentoo / none bind,noatime,commit=60,data=writeback,barrier=0,nobh,journal_async_commit,errors=remount-ro 0 1
Вот так, всё верно?
По backspace вызывается C-h
cat /etc/apt/sources.list.d/multimedia.list
# multimedia
deb http://www.deb-multimedia.org buster main non-free
cat /etc/apt/apt.conf.d/99enable-unsecure-repos
# Acquire::Check-Valid-Until "false";
Acquire::AllowInsecureRepositories "true";
# Acquire::AllowDowngradeToInsecureRepositories "true";
apt-get update
apt-get install -t deb-multimedia mpv
Reading package lists... Done
E: The value 'deb-multimedia' is invalid for APT::Default-Release as such a release is not available in the sources
Если я соберу генту в virtualbox’e и перенесу ее в реальную систему, то мне нужно будет ее полностью пересобирать? Т.е она в виртуалке соберется без полного перечня CFLAGS и тд
| ← назад | следующие → |