我有一个简单形式的django项目来获取用户的详细信息。我想在后台运行python bot并不断检查django数据库是否有任何变化。 Celery是否适合这项工作?还有其他方法吗?谢谢
答案 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)
我没有您需求的详细信息,但有几种方法可以实现这些目标:
不断检查方法:
“改变时”方法: