
Aleksey
28.08.2017
15:16:51
этого делать нельзя (я думаю)

Artem
28.08.2017
15:16:56
логинчо)
что импорчу)

Aleksey
28.08.2017
15:17:04
а вообще, это чат джанги, а не реакта :)

Google

Artem
28.08.2017
15:17:22
в чате реакта в меня ссаными тряпками начнут кидать

BlastPy
28.08.2017
15:17:33
f[f[

Andrey
28.08.2017
15:17:41
А тут тип нет

Artem
28.08.2017
15:18:00

deadkorskiy
28.08.2017
15:19:38
Люди, вопрос, кто сталкивался:
использую transaction atomic в переопределение метода save модели, в этой модели в одной транзакции сохраняются еще несколько дочерних моделей. - все работает.
Теперь все тоже самое - но в другой модуль импортированы модели, в функции этого модуля написан атомик и в нем model1.save() model2.save()
и тут даже если между сохранением двух моделей райзить эксепшен атомик не отрабатывает - 1 модель сохраняется, вторая нет.
В чем может быть проблема ?

Олег
28.08.2017
15:19:48
попробуй export default

Artem
28.08.2017
15:20:14

deadkorskiy
28.08.2017
15:23:39
в проекте 3 БД, я бы предположил что причина в роутах, если бы внутри сейва атомик не работал, но там он работает
логирование в дебаге, в логах ничего содержательного по теме транзакции

Artem
28.08.2017
15:28:37
ты как открываешь атомик, декоратором или блоком?

Google

deadkorskiy
28.08.2017
15:28:46
блоком
в дикаратор тоже оборачивал - картина ровно такая же
ни ошибок ни варнингов, просто если атомик вне модели он игнорится

Artem
28.08.2017
15:30:10
пример показать можешь?

deadkorskiy
28.08.2017
15:31:50
да, но сори он будет в несколько скринов:

Artem
28.08.2017
15:32:52
без проблем

Олег
28.08.2017
15:33:04

Artem
28.08.2017
15:33:28
гавно сыпет не содержащее сути

deadkorskiy
28.08.2017
15:34:03
1) есть базовый класс бизнес логики
есть какая то модель которая от него унаследованна
там таких много
теперь, у меня где то в другом модуле есть list этих HistoricalValue, из разных имплементаций
я хочу пройтись по нему в цикле и для каждой модели вызвать save и если хоть одна не отработала - не писать в бд ни одной

Denis
28.08.2017
15:36:27
super(type(self), self)
Зачем?

Artem
28.08.2017
15:36:42

Denis
28.08.2017
15:36:50
Это не так работает
Нужно явно писать имя класса
Иначе у наследника type вернет не то и произойдет какая-то хрень

Google

Denis
28.08.2017
15:37:53
Если питон третий, лучше просто super()

Artem
28.08.2017
15:37:57
type(*arg), вернет как раз таки класс текущий, вопрос только, что будет c mro()

deadkorskiy
28.08.2017
15:38:03
оно замечательно сораняется и все такое, не работает только атомик

Artem
28.08.2017
15:39:40

deadkorskiy
28.08.2017
15:39:48
Более того, это уже просто одна из реализаций с которой я пока смирился. А пока разбирался я тестил и просто на двух модельках в которые все явно захардкодивал чтобы убедиться - и все равно не работало

Denis
28.08.2017
15:39:56
я дебажил, с этим там все правильно
>>> class A:
... def f(self):
... print('A')
...
>>> class B(A):
... def f(self):
... super(type(self), self).f()
... print('B')
...
>>> class C(B):
... def f(self):
... super(type(self), self).f()
... print('C')
...
>>> c = C()
>>> c.f()
Тут бесконечная рекурсия

Artem
28.08.2017
15:40:51

Denis
28.08.2017
15:41:08
Он из B.f вызывает B.f
Потому что super(C, self) = B

deadkorskiy
28.08.2017
15:41:18

Denis
28.08.2017
15:41:53
У тебя пока все случайно работает. Чуть поменяешь иерархию - перестанет работать

Artem
28.08.2017
15:43:25

deadkorskiy
28.08.2017
15:45:02

Denis
28.08.2017
15:46:21
super какой?

deadkorskiy
28.08.2017
15:47:37
вызовется супер cUniqueStuff он как видно из последнего скрина пустой и просто унаследован от самой уже обчной модели джано (db_models.TUniquesStuff)

Denis
28.08.2017
15:48:27
Не делай super вообще
self.save()
Из последнего скрина не видно ничего

Google

deadkorskiy
28.08.2017
15:49:39

Artem
28.08.2017
15:51:21

deadkorskiy
28.08.2017
15:52:55

Artem
28.08.2017
15:53:27
и вообще доступ

deadkorskiy
28.08.2017
15:54:09
не работают только транзакции, я в одном атомике между сохраненеием двух моделей делаю raise Exception и 1 модель остается в бд а вторая соответсвенно нет

Denis
28.08.2017
15:55:41
Ну открой код атомика, поставь внутрь брейкпоинт и посмотри, когда он выполняется

Massimo
28.08.2017
15:56:29

Artem
28.08.2017
15:57:13

Denis
28.08.2017
15:57:43
Жээсники, сэр

Massimo
28.08.2017
15:58:09

ilya
28.08.2017
15:58:17
Жэсянка)

Artem
28.08.2017
15:58:19
Верните десктопный софт, кругом плюсы и сплошь нативность!!!
*плак-плак*
у меня браузер жрет больше черз Crysis3

ilya
28.08.2017
15:58:58

Artem
28.08.2017
15:59:00
а грофона нету!

deadkorskiy
28.08.2017
16:00:30

Denis
28.08.2017
16:00:31
Юзает кто GraphQL на своих проектах?

Artem
28.08.2017
16:02:29

Google

Artem
28.08.2017
16:03:12

Denis
28.08.2017
16:05:22
Просто некоторые вещи в нём реально удобно делать.. например мутации с разных бд... меня больше волнует ALC в таких вещах...

Alex
28.08.2017
16:29:21
Не могу понять что делает uwsgi.
Я вот локально запускаю как
Python manage.py runserver 8000
На прод так нельзя?
uWSGI быстрее?
В чем разница ?

Denis
28.08.2017
16:30:28
На прод так нельзя, потому что медленно

ilya
28.08.2017
16:31:27

Alex
28.08.2017
16:36:46
А может кто обьяснить в чем разница? За счёт чего оно быстрее и лучше

ilya
28.08.2017
16:38:51

Andrey
28.08.2017
16:39:30
Runserver не предназначен ни для чего кроме запуска в соло для разработки на локальной машине.

Дмитрий
28.08.2017
16:46:47
Когда читаю. На продах

Andrey
28.08.2017
16:47:35

Дмитрий
28.08.2017
16:54:01

X
28.08.2017
17:10:56
А есть статистика на сколько медленнее?)

Олег
28.08.2017
18:24:14

Sergey
28.08.2017
18:28:02
и его не надо юзать в проде

Artem
28.08.2017
19:18:42

Denis
28.08.2017
19:21:24
Ну с опачиком люди живут

Artem
28.08.2017
19:23:54

Massimo
28.08.2017
19:27:58