在django背景中运行python bot

时间:2017-10-30 20:02:14

标签: python django

我有一个简单形式的django项目来获取用户的详细信息。我想在后台运行python bot并不断检查django数据库是否有任何变化。 Celery是否适合这项工作?还有其他方法吗?谢谢

2 个答案:

答案 0 :(得分:2)

我认为Celery不是你想要的 - Celery主要用于将不需要在同一过程中处理的任务移动到单独的工作人员,例如发送注册电子邮件。

对于这种情况,只要对数据库进行适当的更改,我就倾向于使用Django's signals来触发所需的功能。例如,如果需要在创建特定类型的对象(例如新用户)时触发,则可以使用用户模型的upstream odoo { server 127.0.0.1:8069; } server { listen 80; server_name odoo.site.com; root /usr/share/nginx/html; index index.html index.htm; access_log /var/log/nginx/odoo-mydomain-local.access.log; error_log /var/log/nginx/odoo-mydomain-local.error.log; location / { proxy_pass http://odoo; # force timeouts if the backend dies proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; # set headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } # cache some static data in memory for 60mins location ~* /web/static/ { proxy_cache_valid 200 60m; proxy_buffering on; expires 864000; proxy_pass http://odoo; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/odoo.site.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/odoo.site.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot if ($scheme != "https") { return 301 https://$host$request_uri; } # managed by Certbot } 信号。

僵尸程序将处于一个单独的过程中,但使用Redis在进程之间进行通信并不困难。只需让信号向Redis发布消息,让机器人听取该消息并对该事件执行必要的操作。

答案 1 :(得分:0)

我没有您需求的详细信息,但有几种方法可以实现这些目标:

不断检查方法:

  • A crontab每分钟启动一次python脚本。
  • 就像你说的那样,你可以使用Celery beat来实现你的python环境中crontab的功能

“改变时”方法:

  • 可能是最好的,如果你控制了Django项目,你可以在表单验证/保存上运行你的脚本!为此,您可以添加芹菜任务,运行python脚本,使用Django信号......