我问这个是因为我不太清楚如何使用Android内容提供商.我有一个包含8个表的数据库的子集,我需要创建复杂的查询来获取一些数据.我的内容提供商可以很好地处理简单查询 例如,我在PersonModel.java类上有一个表Person,我使用以下方法获取数据:
String [] projection = {PersonModel.C_FIRST_NAME, PersonModel.C_LAST_NAME};
Cursor cursor = context.getContentResolver().query(
MyProvider.CONTENT_URI_PERSONS, projection, null,
null, null);
Run Code Online (Sandbox Code Playgroud)
它完美无缺.
在MyProvider上,我的每个表都有一堆CONTENT_URI常量.
public class MyProvider extends ContentProvider {
MyDbHelper dbHelper;
SQLiteDatabase db;
private static final String AUTHORITY = "com.myapp.models";
//Paths for each tables
private static final String PATH_PROFILE_PICTURES = "profile_pictures";
private static final String PATH_PERSONS = "persons";
private static final String PATH_USERS = "users";
....
//Content URIs for each table
public static final Uri CONTENT_URI_PROFILE_PICTURES = Uri
.parse("content://" + …Run Code Online (Sandbox Code Playgroud) 我使用带有net-http-persistent适配器的Faraday来发出 HTTP 请求。
我想通过使请求异步执行来优化它们,但由于我需要持久连接,所以我不断收到错误,例如too many connections reset我认为这是由于我有多个线程创建新连接的事实。
我尝试将适配器更改为tyhoeus,但由于连接不是持久的,因此执行所有请求的最终结果并不符合预期。
我的目标是通过发出此 HTTP 请求将商品添加到购物篮中。如果没有持久连接,项目不会添加到购物篮中。
所以,我的问题是:
这是我的一段代码:
创建连接:
Faraday.new do |c|
c.use :cookie_jar, jar: cookie_jar
c.options.open_timeout = 5
c.options.timeout = 10
c.request :url_encoded
c.response :logger, logger
c.adapter :net_http_persistent do |http| # yields Net::HTTP::Persistent
http.idle_timeout = 2
end
end
Run Code Online (Sandbox Code Playgroud)
创建线程并获取每个线程的结果
result = []
threads = []
total_items = items.size
items.each_slice(5) do |sliced_items|
# Create a thread for a batch of 5 items and …Run Code Online (Sandbox Code Playgroud) 我想创建一个后台任务来更新特定日期的记录。我在 RabbitMQ 中使用了 Django 和 Celery。
我设法在使用此虚拟任务功能保存模型时调用了该任务:
任务.py
from __future__ import absolute_import
from celery import Celery
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
app = Celery('tasks', broker='amqp://localhost//')
@app.task(name='news.tasks.update_news_status')
def update_news_status(news_id):
# (I pass the news id and return it, nothing complicated about it)
return news_id
Run Code Online (Sandbox Code Playgroud)
这个任务是从我的models.py 中的save() 方法调用的
from django.db import models
from celery import current_app
class News(models.model):
(...)
def save(self, *args, **kwargs):
current_app.send_task('news.tasks.update_news_status', args=(self.id,))
super(News, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
问题是我想在 tasks.py 中导入我的新闻模型,但如果我尝试这样:
from .models import News
我收到此错误: …