• Как настроить HTTP-уведомления от Яндекс.Деньгах в Django?

    @AntonIgin Автор вопроса
    StarikNaBrevne, значит, надо проверить, что же там за значение у request.method приходит, и под него подстроиться
  • Как настроить HTTP-уведомления от Яндекс.Деньгах в Django?

    @AntonIgin Автор вопроса
    StarikNaBrevne, не помню, честно говоря, пару лет прошло.
    Но сейчас смотрю документация и в принципе вопросов не возникает:
    1) добавить в проекте ссылку, куда Яндексу надо будет отправлять данные, подготовить логику сохранения
    2) добавить ссылку в http-уведомлениях:
    https://money.yandex.ru/myservices/online.xml

    Лениво проверять, но думаю, redirect не канает, т.к. надо четко вернуть именно 200, а не редирект куда-то.
  • Какой курс по освоению интернет-технологий можно посоветовать полному чайнику?

    @AntonIgin Автор вопроса
    Бред какой-то в комментах.

    Я сам ВО не имею, но думаю, что вуз имеет минимум одно действительно стоящее преимущество - учебная программа. Тебе не надо самому искать литературу и бояться, что ты что-то пропустил, тебе задают направление педагоги-программисты. Студенту незачем задавать вопросы вроде моего "Ашочитать?", самоучке - необходимо.

    Но проблема с программой обучения решается, если самоучка находит "благодетеля", который способен составить программу. Зная, что надо читать, смотреть, какое оборудование покупать, если того требует специальность (взять тех же электронщиков с их станками, растворами и другими колдунскими атрибутами), то в общем-то дальше все зависит только от способностей и желания ученика. Студент спросит совета у препода, самоучка - на тостере. Один получит практику на стажировках, второй - на своих проектах, а позже на таких же стажировках.
  • ImportError: No module named site - как это исправить ик заставить ini-файл брать python3 вместо python2?

    @AntonIgin Автор вопроса
    Просто оставляю это здесь:
    [uwsgi]
    plugins-dir = /usr/lib/uwsgi/plugins
    plugin = python3
    chdir = /home/anton/Django-u/company_base/
    module = company_base.wsgi
    home = /home/anton/virtenvs/com_env/
    master = true
    processes = 4
    socket = /home/anton/Django-u/company_base/company.sock
    chmod-socket = 666
    vacuum = true
    no-orphans = true
    workers = 2
    gid = anton
    uid = anton

    Плюс выяснилось, что делать запрос через emperor даже при таком конфиге бесполезно - проблема решится только прямым обращение к ini-файлу. Пример:
    uwsgi --ini /etc/uwsgi/vassals/company_uwsgi.ini
  • ImportError: No module named site - как это исправить ик заставить ini-файл брать python3 вместо python2?

    @AntonIgin Автор вопроса
    PrAw, нет, не помогло. Проблему с ошибкой-то я решил, но свое наблюдение уже сказал: из двух пакетов uwsgi в pip и pip3 выбирать система будет тот, что ставили последним. Собственно, вот и все мое решение. Строки для плагинов в ini-файле,к сожалению, не влияют ни на что. Может, и правда стоит напрямую дать доступ к консоли.
    А как насчет связи через teamviewer? Можно организовать. Если согласны, давайте скину на почту скайп.
  • Как подключиться удаленно к другому компьютеру с Ubuntu?

    @AntonIgin Автор вопроса
    mureevms, обычная машина, ноутбук, подключенный через модем по проводу. Нужны какие-то конкретные технические параметры? Если да, где их посмотреть, какой командой?
  • Как подключиться удаленно к другому компьютеру с Ubuntu?

    @AntonIgin Автор вопроса
    mureevms, и правда. Я думал, если не указать пользователя, подключаться будет к главному, а система берет имя подключающегося.
  • ImportError: No module named site - как это исправить ик заставить ini-файл брать python3 вместо python2?

    @AntonIgin Автор вопроса
    PrAw, установил, удалил uwsgi-plugin-python. В общем-то при двух uwsgi проблема не решается: все еще приоритет отдается тому, что в python 2.7.

    Может, так и задумано: активной может быть только одна версия uwsgi, из pip или pip3, то есть последняя установленная (записавшая свой путь в переменную)?
  • ImportError: No module named site - как это исправить ик заставить ini-файл брать python3 вместо python2?

    @AntonIgin Автор вопроса
    Так и не решил проблему.

    Установил плагин:
    sudo apt-get install uwsgi-plugin-python

    Добавил в ini-файл приставку:
    plugin 			= python3
    plugins-dir 	= /usr/lib/uwsgi/plugins


    Попробовал еще раз запустить:
    sudo uwsgi --emperor /etc/uwsgi/vassals --uid anton --gid anton


    Более того, теперь новая ошибка:

    (com_env) anton@anton-X451CA:~/Django-u/company_base$ sudo uwsgi --emperor /etc/uwsgi/vassals --uid anton --gid anton
    *** Starting uWSGI 2.0.12-debian (64bit) on [Thu Sep 14 15:40:06 2017] ***
    compiled with version: 5.4.0 20160609 on 31 August 2017 21:02:04
    os: Linux-4.10.0-33-generic #37~16.04.1-Ubuntu SMP Fri Aug 11 14:07:24 UTC 2017
    nodename: anton-X451CA
    machine: x86_64
    clock source: unix
    pcre jit disabled
    detected number of CPU cores: 2
    current working directory: /home/anton/Django-u/company_base
    detected binary path: /usr/bin/uwsgi-core
    setgid() to 1000
    set additional group 4 (adm)
    set additional group 24 (cdrom)
    set additional group 27 (sudo)
    set additional group 30 (dip)
    set additional group 46 (plugdev)
    set additional group 113 (lpadmin)
    set additional group 128 (sambashare)
    setuid() to 1000
    *** WARNING: you are running uWSGI without its master process manager ***
    your processes number limit is 15083
    your memory page size is 4096 bytes
    detected max file descriptor number: 1024
    *** starting uWSGI Emperor ***
    *** has_emperor mode detected (fd: 6) ***
    [uWSGI] getting INI configuration from company_uwsgi.ini
    open("/usr/lib/uwsgi/plugins/python3_plugin.so"): No such file or directory [core/utils.c line 3684]
    !!! UNABLE to load uWSGI plugin: /usr/lib/uwsgi/plugins/python3_plugin.so: cannot open shared object file: No such file or directory !!!
    *** Starting uWSGI 2.0.12-debian (64bit) on [Thu Sep 14 15:40:06 2017] ***
    compiled with version: 5.4.0 20160609 on 31 August 2017 21:02:04
    os: Linux-4.10.0-33-generic #37~16.04.1-Ubuntu SMP Fri Aug 11 14:07:24 UTC 2017
    nodename: anton-X451CA
    machine: x86_64
    clock source: unix
    pcre jit disabled
    detected number of CPU cores: 2
    current working directory: /etc/uwsgi/vassals
    detected binary path: /usr/bin/uwsgi-core
    chdir() to /home/anton/Django-u/company_base/
    your processes number limit is 15083
    your memory page size is 4096 bytes
    detected max file descriptor number: 1024
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uwsgi socket 0 bound to UNIX address /home/anton/Django-u/company_base/company.sock fd 3
    your server socket listen backlog is limited to 100 connections
    your mercy for graceful operations on workers is 60 seconds
    mapped 800448 bytes (781 KB) for 10 cores
    *** Operational MODE: preforking ***
    *** no app loaded. going in full dynamic mode ***
    *** uWSGI is running in multiple interpreter mode ***
    !!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!
    no request plugin is loaded, you will not be able to manage requests.
    you may need to install the package for your language of choice, or simply load it with --plugin.
    !!!!!!!!!!! END OF WARNING !!!!!!!!!!
    spawned uWSGI master process (pid: 7399)
    Thu Sep 14 15:40:06 2017 - [emperor] vassal company_uwsgi.ini has been spawned
    spawned uWSGI worker 1 (pid: 7400, cores: 1)
    spawned uWSGI worker 2 (pid: 7401, cores: 1)
    Thu Sep 14 15:40:06 2017 - [emperor] vassal company_uwsgi.ini is ready to accept requests
    spawned uWSGI worker 3 (pid: 7402, cores: 1)
    spawned uWSGI worker 4 (pid: 7403, cores: 1)
    spawned uWSGI worker 5 (pid: 7404, cores: 1)
    spawned uWSGI worker 6 (pid: 7405, cores: 1)
    spawned uWSGI worker 7 (pid: 7406, cores: 1)
    spawned uWSGI worker 8 (pid: 7407, cores: 1)
    spawned uWSGI worker 9 (pid: 7408, cores: 1)
    spawned uWSGI worker 10 (pid: 7409, cores: 1)


    Что делать? С ini-файлом все в порядке, при запуске uwsgi --ini company_uwsgi.ini сайт открывается, как и положено (хотя сообщение, что !!! UNABLE to load uWSGI plugin: ./python3_plugin.so: cannot open shared object file: No such file or directory !!! на месте). Вот его содержимое на данный момент:

    [uwsgi]
    plugin 			= python3
    plugins-dir 	= /usr/lib/uwsgi/plugins
    
    chdir           = /home/anton/Django-u/company_base/
    module          = company_base.wsgi
    home            = /home/anton/virtenvs/com_env/
    master          = true
    processes       = 10
    socket          = /home/anton/Django-u/company_base/company.sock
    chmod-socket    = 666
    vacuum          = true
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, во втором случае default=timezone.now() выполняет функцию. В первом случае не уверен, но думаю, что default копирует в себя код метода timezone.now.
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, не очень понимаю, почему при использовании модели в __init__ ошибки не возникает.
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, в общем, оказалось, что надо создать в форме __init__, то есть класс должен выглядеть так:

    class ProfileFilterForm(forms.Form):
    	def __init__(self, *args, **kwargs):
    		choices = [('all', 'Все отделы')]
    		sectors = Sector.objects.all()
    		for i in sectors:
    			choices.append((i.pk, i.name))
    		self.fields['sector'].choices=choices
    
    	available = forms.BooleanField(label = 'Работают в компании', required=False, \
    		widget=forms.CheckboxInput(attrs={'name':'available', 'value':'1','style':'selector_element',}))
    	sector = forms.ChoiceField(label='Отдел', required=False, \
    			widget=forms.Select(attrs={'name':'sector', 'style':'selector_element',}))


    Корректно?
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, допустим, вот форма:

    class ProfileFilterForm(forms.Form):
    	available = forms.BooleanField(label = 'Работают в компании', required=False, widget=forms.CheckboxInput(attrs={'name':'available', 'value':'1','style':'selector_element',}))
    	sector = forms.ChoiceField(label='Отдел', required=False, choices=build_sectors_list(), widget=forms.Select(attrs={'name':'sector', 'style':'selector_element',}))


    А вот функция, описанная в начале скрипта:
    def build_sectors_list():
    	choices = [('all', 'Все отделы')]
    	if 'makemigrations' not in sys.argv and 'migrate' not in sys.argv:
    		sectors = Sector.objects.all()
    		for i in sectors:
    			choices.append((i.pk, i.name))
    	return choices


    Как пофиксить баг, не прибегая к костылю?
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, а как тогда в choices поля формы запихнуть объекты модели Sector?
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, я тоже об этом подумал, когда увидел. Эталонный практически, но работает. :)
  • Django и PostgreSQL: Что делать с django.db.utils.ProgrammingError?

    @AntonIgin Автор вопроса
    Anton Kuzmichev, и правда, на чистом sqlite3 тоже есть ошибка.

    Дело в этой функции из forms.py

    def build_sectors_list():
    sectors = Sector.objects.all()
    choices = [('all', 'Все отделы')]
    for i in sectors:
    choices.append((i.pk, i.name))
    return choices

    Сейчас вспомнил, что у меня была уже похожая проблема с другим проектом и я создавал вопрос:
    https://stackoverflow.com/questions/42024101/probl...

    Сейчас я решил проблему такой заплаткой:
    def build_sectors_list():
    choices = [('all', 'Все отделы')]
    if 'makemigrations' not in sys.argv and 'migrate' not in sys.argv:
    sectors = Sector.objects.all()
    for i in sectors:
    choices.append((i.pk, i.name))
    return choices

    В общем, спасибо, что подсказали попробовать с SQLite3.
  • Как запустить скрипты celeryd и celerybeat без supervisord?

    @AntonIgin Автор вопроса
    Вот же логи.
    ubuntu@cloud-netzbarkeit-03:/var/run/celery$ systemctl status celery.service
    ● celery.service - Celery Service
    Loaded: loaded (/etc/systemd/system/celery.service; disabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Wed 2017-08-30 11:14:48 UTC; 6s ago
    Process: 1938 ExecStart=/bin/sh -c ${CELERY_BIN} multi start ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELER

    Aug 30 11:14:48 cloud-netzbarkeit-03 systemd[1]: Starting Celery Service...
    Aug 30 11:14:48 cloud-netzbarkeit-03 systemd[1]: celery.service: Control process exited, code=exited status=217
    Aug 30 11:14:48 cloud-netzbarkeit-03 systemd[1]: Failed to start Celery Service.
    Aug 30 11:14:48 cloud-netzbarkeit-03 systemd[1]: celery.service: Unit entered failed state.
    Aug 30 11:14:48 cloud-netzbarkeit-03 systemd[1]: celery.service: Failed with result 'exit-code'.

    Или нужны не эти?
    Я плохо разбираюсь в linux, поэтому когда вы сказали по поводу прав, сделал так:
    sudo chmod 666 /var/log/celery/
    sudo chmod 666 /var/run/celery/
    Судя по результату, права выдаются иначе.
  • Как запустить скрипты celeryd и celerybeat без supervisord?

    @AntonIgin Автор вопроса
    Не помогло, сделал все вот так.

    Добавил файл /etc/systemd/system/celery.service с таким кодом:
    [Unit]
    Description=Celery Service
    After=network.target
    
    [Service]
    Type=forking
    User=celery
    Group=celery
    EnvironmentFile=-/etc/conf.d/celery
    WorkingDirectory=/opt/celery
    ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
      -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
      --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
    ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
      --pidfile=${CELERYD_PID_FILE}'
    ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
      -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
      --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
    
    [Install]
    WantedBy=multi-user.target


    Затем создал файл /etc/conf.d/celery с таким кодом:

    CELERYD_NODES="xxx_apart"
    CELERY_BIN="/home/ubuntu/virtenvs/env_apart/bin/celery"
    CELERY_APP="xxx_apart.celery:app"
    CELERYD_MULTI="multi"
    
    CELERYD_OPTS="--time-limit=300 --concurrency=8"
    CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    CELERYD_LOG_LEVEL="INFO"


    Простой перезагрузки sudo reboot, как и ожидал, не хватило, но и команда sudo systemctl start celery.service не сработала - выдает ошибку:
    Job for celery.service failed because the control process exited with error code. See "systemctl status celery.service" and "journalctl -xe" for details.

    Пишу systemctl status celery.service и получаю следующее:

    ubuntu@cloud-netzbarkeit-03:~$ systemctl status celery.service
    ● celery.service - Celery Service
       Loaded: loaded (/etc/systemd/system/celery.service; disabled; vendor preset: 
       Active: failed (Result: exit-code) since Wed 2017-08-30 08:12:52 UTC; 16s ago
      Process: 1612 ExecStart=/bin/sh -c ${CELERY_BIN} multi start ${CELERYD_NODES} 
    
    Aug 30 08:12:52 cloud-netzbarkeit-03 systemd[1]: Starting Celery Service...
    Aug 30 08:12:52 cloud-netzbarkeit-03 systemd[1]: celery.service: Control process
    Aug 30 08:12:52 cloud-netzbarkeit-03 systemd[1]: Failed to start Celery Service.
    Aug 30 08:12:52 cloud-netzbarkeit-03 systemd[1]: celery.service: Unit entered fa
    Aug 30 08:12:52 cloud-netzbarkeit-03 systemd[1]: celery.service: Failed with res


    В чем причина? Я вижу, что возникла ошибка на моменте ExecStart, но не понимаю почему. Я взял те же параметры, что и в /etc/init.d/celeryd, а там проблем с ручным запуском celeryd+celerybeat нет.
  • Как запускать Celery сразу с учетом виртуального окружения?

    @AntonIgin Автор вопроса
    Да, файл requirements есть. И да, о том, что можно использовать копию celery оттутад, как-то не подумал. Спасибо. :)